Si j'ai une liste de listes et que je veux juste manipuler un élément individuel de cette liste, comment pourrais-je m'y prendre?
Par exemple:
List1 = [[10,13,17],[3,5,1],[13,11,12]]
Que se passe-t-il si je veux prendre une valeur (disons 50) et regarder seulement la première sous-liste dans List1
, et soustraire 10 (la première valeur), puis ajouter 13, puis soustraire 17?
Vous pouvez accéder aux éléments d'une liste de listes en spécifiant d'abord la liste qui vous intéresse, puis en spécifiant l'élément de cette liste que vous souhaitez. Par exemple, 17
est l’élément 2
dans la liste 0
, qui est list1[0][2]
:
>>> list1 = [[10,13,17],[3,5,1],[13,11,12]]
>>> list1[0][2]
17
Donc, votre exemple serait
50 - list1[0][0] + list1[0][1] - list1[0][2]
Vous pouvez utiliser itertools.cycle
:
>>> from itertools import cycle
>>> lis = [[10,13,17],[3,5,1],[13,11,12]]
>>> cyc = cycle((-1, 1))
>>> 50 + sum(x*next(cyc) for x in lis[0]) # lis[0] is [10,13,17]
36
Ici, l'expression du générateur dans sum
renverrait quelque chose comme ceci:
>>> cyc = cycle((-1, 1))
>>> [x*next(cyc) for x in lis[0]]
[-10, 13, -17]
Vous pouvez également utiliser Zip
ici:
>>> cyc = cycle((-1, 1))
>>> [x*y for x, y in Zip(lis[0], cyc)]
[-10, 13, -17]
List1 = [[10,-13,17],[3,5,1],[13,11,12]]
num = 50
for i in List1[0]:num -= i
print num
50 - List1[0][0] + List[0][1] - List[0][2]
List[0]
vous donne la première liste de la liste (essayez print List[0]
). Ensuite, vous indexez à nouveau pour obtenir les éléments de cette liste. Pensez-y de cette façon: (List1[0])[0]
.
for l in list1:
val = 50 - l[0] + l[1] - l[2]
print "val:", val
Parcourez la liste et effectuez les opérations sur la sous-liste comme vous le souhaitez.
Ce code imprimera chaque numéro individuel:
for myList in [[10,13,17],[3,5,1],[13,11,12]]:
for item in myList:
print(item)
Ou pour votre cas d'utilisation spécifique:
((50 - List1[0][0]) + List1[0][1]) - List1[0][2]