web-dev-qa-db-fra.com

Elément d'accès dans une liste de listes

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?

25
John

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]
35
arshajii

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]
4
Ashwini Chaudhary
List1 = [[10,-13,17],[3,5,1],[13,11,12]]

num = 50
for i in List1[0]:num -= i
print num
1
Joran Beasley
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].

0
Donald Miner
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.

0
rajpy

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]
0
Phil