bonjour,
je traite une liste de liste de tuple qui se transformera plus tard en liste de tuples. J'ai une fonction de traitement ci jointe qui doit me faire des modification au niveau le plus bas dans la liste.
Les modification prisent à ce niveau fonctionnent bien, mais quand je renvoie ma liste de depart (de plus haut niveau), les modification ne sont pas effectives, comme si j'avais travaillé avec une copie de liste et non pas l'originale
Quelqu'un a t-il une explication ?
voici mon code
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
27
28
29
30
31
32
33 global_list=[[('N1', 'P1', 0, 'PCS1'), ('N1', 'P1', 1, 'PCS2'), ('N1', 'P1', 0, 'PCS3')], [('N2', 'P2', 0, 'PCS1'), ('N2', 'P2', 0, 'PCS2')]] condition=(2,0, 3, '_') def condition_traitement(global_list, condition): """filtre les tuple des listes de facon à remplir les condition transmises Les conditions sont sous la forme d'un tuple de 4 elements elemt1 -> position dans le tuple de la condition à vérifier elemt2 -> condition à remplir elemt3 -> position du champs affecter par cette condition elemt4 -> conduite à tenir en cas ou la condition est remplie entree : global_list=liste de liste de tuple de la requete condition=tuple de traitement de la condition sortie : liste avec les condition vérifiées et triees """ #pour chaque liste de la liste for member_list in global_list: #pour chaque tuple de la liste for member_tuple in member_list: #tranformer le tuple en liste pour pouvoir effectuer les modifs member_tuple=list(member_tuple) #si condition remplie if member_tuple[condition[0]]==condition[1]: #transformer l'element affecter par la condition member_tuple[condition[2]]=condition[3] #supprimer l'element test de condition del member_tuple[condition[0]] #tranformer la liste en tuple pour securite member_tuple=tuple(member_tuple) #retourner la liste modifiee return global_list
Partager