Bonjour je voudrais savoir s'il est possible (et si oui comment) de mettre des variables dans les listes à savoir que lorsqu'on fait appel à la liste celle-ci prend la valeur actuel de la variable dans la liste ?
merci
Bonjour je voudrais savoir s'il est possible (et si oui comment) de mettre des variables dans les listes à savoir que lorsqu'on fait appel à la liste celle-ci prend la valeur actuel de la variable dans la liste ?
merci
Bonjour !
Je ne suis pas sûr de bien comprendre.
Donc non...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 >>> toto = '5' >>> tata = '6' >>> titi = '7' >>> tutu = '8' >>> famille = [toto, tata, titi, tutu] >>> famille[0] '5' >>> toto = '55' >>> famille[0] '5'
Mais bon c'est normal.
Sa demande n'est pas très claire à mon goût...
En pratique on utilisera par exemple un dictionnaire :
https://frederic-lang.developpez.com...a-python#LIV-7
Je n'ai rien compris, mais je n'ai lu la question que trois fois
Un exemple peut-être, ou alors expliquer quel est le but de la manoeuvre.
bonjour
Question pas bien comprise, mais ton exemple est bien
Ici dans ton exemple, c'est que l'on va créer une autre variablenous perdons donc la référence au précédent objet et nous modifions en réalité un nouvel objet
Si notre objet est mutable :
on change bien le contenu de la liste et dict directement via l'objet (de départ)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class Truc: def __init__(self, v): self.val = v def __repr__(self): return str(self.val) def inc(self): self.val += 1 def set(self, v): self.val = v toto = Truc(5) tata = 6 titi = 7 tutu = 8 fam = {"toto:": toto} famille = [toto, tata, titi, tutu] print(toto, famille, fam) #toto = Truc(55) NON sinon c'est une autre variable que le précédent "toto" toto.inc() print(toto, famille, fam) toto.set("essai") print(toto, famille, fam)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 5 [5, 6, 7, 8] {'toto:': 5} 6 [6, 6, 7, 8] {'toto:': 6} essai [essai, 6, 7, 8] {'toto:': essai}
P'tite question au passage, il n'y a que la liste, le dictionnaire et le set qui soient mutables ?
Exemple :
n=1
list = ["banane", n]
print list
ça fait : banane, 1
n=n+1
print list
banane, 2
Je demande juste si on peut mettre des variables dans les listes.
Bonjour
Oui
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> n=1 >>> l=[n, n] >>> l [1, 1]
Ensuite, la question est de savoir ce qui se passe si on modifie la variable.Mais la réponse dépend de savoir si la variable est "simple" ou "complexe"
Tout ce qui est (int, flot, str) est "simple". Ici on a un int (n=1) donc simple. Elle a simplement été copiée dans la liste "l" donc son changement untérieur n'influe pas sur la liste...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> n=n+1 >>> l [1, 1] >>>
Tout ce qui est (liste, ensemble, dictionnaire, objet) est "complexe". Pour faire des économies, Python les copie alors par quelque chose qu'on peut appeler "référence" (ou "pointeur" pour ceux qui ont fait du C) car c'est plus rapide de copier la référence d'une liste que la liste complète. Mais (inconvénient) si on modifie la liste d'origine, ça impacte aussi la liste dans laquelle elle a été copiée.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 >>> n=["xxx", "yyy"] >>> l=[n,n] >>> l [['xxx', 'yyy'], ['xxx', 'yyy']] >>> n[0]="toto" >>> l [['toto', 'yyy'], ['toto', 'yyy']] >>>
Tu te rends compte que c'est le cas le jour où tu définis tes propres objets lesquels devront posséder l'opérateur d'addition...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class myInt: def __init__(self, n): print("init", self, n) self.__value=n def __del__(self): print("del", self, self.__value) def __add__(self, n): print("add", self, n) return myInt(self.__value + n) n=myInt(5) print(hex(id(n))) n+=1 print(hex(id(n)))
Au codage tu te rends compte que l'addition est obligée de retourner un nouvel objet. Et donc au résultat...
Il y a d'abord création du 5, avant qu'il soit affiché. Puis quand l'addition est appelée, elle effectue successivement création du 6, puis suppression du 5 ; et le 6 est alors affiché. Puis enfin suppression du 6 quand le programme se termine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 init <__main__.myInt object at 0x7f4e43db9de0> 5 0x7f4e43db9de0 add <__main__.myInt object at 0x7f4e43db9de0> 1 init <__main__.myInt object at 0x7f4e43db9690> 6 del <__main__.myInt object at 0x7f4e43db9de0> 5 0x7f4e43db9690 del <__main__.myInt object at 0x7f4e43db9690> 6
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Le plus simple est de savoir ce qui est immutable : bool, int, str, bytes, tuple, frozenset. Donc cet exemple ne fonctionne pas avec un tuple. Tout le reste est mutable.
En reprenant ton nom de variable "famille", on peut ajouter des objets mutables "Personne" pour un exemple plus parlant
---------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 papa = Personne("Papa", 45) maman = Personne("Maman", 42) Famille = [papa, maman] papa.age = 46
j'ai répondu :
Oui, nous avons des variables (des références sur ces variables) dans une liste et nous pouvons les modifier (si elles sont mutables)
ici, tu vas créer une nouvelle variable n et en aucun cas modifier le variable n précédente (et le contenu de "list" pointe lui vers le n précédent donc ne change pas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part n=n+1
Note: n est un entier et un entier est immutable...
Par contre la syntaxe n += 1 pourrait être trompeuse, on pourrait se dire qu'on ne crée pas une nouvelle variable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> n = 5 >>> id(n) 2335538020720 >>> n += 1 >>> id(n) 2335538020752
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Ah ok merci Sve@r c'est plus clair !
Partager