[PYTHON] Possible de faire ca ?
ChatteAOP
2022-03-20 18:50:54
for i in range(len(Liste)):
if Liste[i]['v'] == None:
Liste[i]['v'] = Liste[i-1]['v']
Possible de faire ca sur une seul ligne ?
j'ai vu des bout de code comme celui ci : over_30 = [number if number > 30 for number in numbers]
ou encore : whales = [x for x,y in customers if y<1000000]
mais ca me donne pas la possibilité de faire comme je el souhaite
BretonaxDeter
2022-03-20 18:51:38
oui c'est possible, je crois que ca s'appelle "liste en extension" mais j'ai toujours eu du mal à le faire, du coup je pourrais pas te dire comment
ChatteAOP
2022-03-20 18:58:40
Le 20 mars 2022 à 18:51:38 :
oui c'est possible, je crois que ca s'appelle "liste en extension" mais j'ai toujours eu du mal à le faire, du coup je pourrais pas te dire comment
Le 20 mars 2022 à 18:57:09 :
Le 20 mars 2022 à 18:51:38 :
oui c'est possible, je crois que ca s'appelle "liste en extension" mais j'ai toujours eu du mal à le faire, du coup je pourrais pas te dire comment
Listes en compréhension plutôt
Perso je ne maîtrise pas du tout mais tiens si ça peut t'aider : https://python.doctor/page-comprehension-list-listes-python-cours-debutants
merci
je viens de d'découvrir ce style d'écriture un peu inhabituelle mais si ca peut résoudre mon problème
JuliaHolter2
2022-03-20 18:58:58
lst = [ Liste[i-1]['v'] if Liste[i]['v'] == None for i in range(len(Liste))]
ca marche ca non ?
ChatteAOP
2022-03-20 19:00:12
Le 20 mars 2022 à 18:58:58 :
lst = [ Liste[i-1]['v'] if Liste[i]['v'] == None for i in range(Liste) ]
ca marche ca non ?
je sais pas
je vais replacer les valeur dans mon code et je te dis
ChatteAOP
2022-03-20 19:02:18
Le 20 mars 2022 à 18:58:58 :
lst = [ Liste[i-1]['v'] if Liste[i]['v'] == None for i in range(Liste) ]
ca marche ca non ?
je sais pas
je vais replacer les valeur dans mon code et je te dis
hJdgf8856dfhgfo
2022-03-20 19:04:59
sinon garde les boucle, au moins on voit plus facilement ce que tu veux faire
Foxyorki23
2022-03-20 19:06:21
liste = [liste[i] for i in range(len(liste)) if liste[i] != None else {key : value for (key, value) in liste[i].items() if key!="v" else (key, liste[i - 1])}]
ChatteAOP
2022-03-20 19:07:44
Le 20 mars 2022 à 19:06:21 :
liste = [liste[i] for i in range(len(liste)) if liste[i] != None else {key : value for (key, value) in liste[i].items() if key!="v" else (key, liste[i - 1])}]
https://image.noelshack.com/fichiers/2016/32/1470919005-img25.pnghttps://image.noelshack.com/fichiers/2016/32/1470919005-img25.png
Foxyorki23
2022-03-20 19:11:47
Le 20 mars 2022 à 19:07:44 :
Le 20 mars 2022 à 19:06:21 :
liste = [liste[i] for i in range(len(liste)) if liste[i] != None else {key : value for (key, value) in liste[i].items() if key!="v" else (key, liste[i - 1])}]
https://image.noelshack.com/fichiers/2016/32/1470919005-img25.pnghttps://image.noelshack.com/fichiers/2016/32/1470919005-img25.png
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else (key, liste[i - 1]) for (key, value) in liste[i].items() } for i in range(len(liste))]
petite erreure de syntaxe https://stackoverflow.com/questions/4260280/if-else-in-a-list-comprehension
ah ça marche
MrCuisine7
2022-03-20 19:15:00
Avec map et lambda oui sûrement
Foxyorki23
2022-03-20 19:18:39
3eme tentative :
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else (key, liste[i - 1]["v"]) for (key, value) in liste[i].items() } for i in range(len(liste))]
ChatteAOP
2022-03-20 19:19:57
Le 20 mars 2022 à 19:18:39 :
3eme tentative :
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else (key, liste[i - 1]["v"]) for (key, value) in liste[i].items() } for i in range(len(liste))]
la longeur de la liste avant et apres est identique donc je suppose que ca marche pas
Foxyorki23
2022-03-20 19:20:39
Le 20 mars 2022 à 19:19:57 :
Le 20 mars 2022 à 19:18:39 :
3eme tentative :
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else (key, liste[i - 1]["v"]) for (key, value) in liste[i].items() } for i in range(len(liste))]
la longeur de la liste avant et apres est identique donc je suppose que ca marche pas
La version qui marche liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else liste[i - 1]["v"] for (key, value) in liste[i].items() } for i in range(len(liste))]
liste = [{"coucou" : "toto", "coucou1" : "toto1", "v" : 3}, {"v" :None},{"v" : 12}, {"v" : 12}]
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else liste[i - 1]["v"] for (key, value) in liste[i].items() } for i in range(len(liste))]
liste = [{'coucou': 'toto', 'coucou1': 'toto1', 'v': 3}, {'v': 3}, {'v': 12}, {'v': 12}]
Kabbalo
2022-03-20 19:25:49
Le 20 mars 2022 à 19:20:39 :
Le 20 mars 2022 à 19:19:57 :
Le 20 mars 2022 à 19:18:39 :
3eme tentative :
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else (key, liste[i - 1]["v"]) for (key, value) in liste[i].items() } for i in range(len(liste))]
la longeur de la liste avant et apres est identique donc je suppose que ca marche pas
La version qui marche liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else liste[i - 1]["v"] for (key, value) in liste[i].items() } for i in range(len(liste))]
liste = [{"coucou" : "toto", "coucou1" : "toto1", "v" : 3}, {"v" :None},{"v" : 12}, {"v" : 12}]
liste = [liste[i] if liste[i]["v"] != None else {key : value if key!="v" else liste[i - 1]["v"] for (key, value) in liste[i].items() } for i in range(len(liste))]
liste = [{'coucou': 'toto', 'coucou1': 'toto1', 'v': 3}, {'v': 3}, {'v': 12}, {'v': 12}]
Ouais je comprends mieux pourquoi les listes en compréhension c'est plutôt utilisé pour des instructions simples
ChatteAOP
2022-03-20 19:45:57
Le 20 mars 2022 à 19:31:32 :
DE RIEN L'AUTEUR
non sans rigoler ca fonctionne pas pour moi
je sais pas surement ne mauvaise adaptation mais merci je vais creuser sur la base de ton exemple