Доступ к элементу в списке списков
Если у меня есть список списков и просто хочу управлять отдельным элементом в этом списке, как бы я это сделал?
Например:
List1 = [[10,13,17],[3,5,1],[13,11,12]]
Что делать, если я хочу взять значение (скажем, 50) и посмотреть только на первый подсписчик в List1
и вычесть 10 (первое значение), а затем добавить 13, а затем вычесть 17?
Ответы
Ответ 1
Вы можете получить доступ к элементам в списке списков, указав сначала, какой список вам интересен, и затем указать, какой элемент этого списка вы хотите. Например, 17
- это элемент 2
в списке 0
, который list1[0][2]
:
>>> list1 = [[10,13,17],[3,5,1],[13,11,12]]
>>> list1[0][2]
17
Итак, ваш пример будет
50 - list1[0][0] + list1[0][1] - list1[0][2]
Ответ 2
Вы можете использовать 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
Здесь выражение генератора внутри sum
будет возвращать что-то вроде этого:
>>> cyc = cycle((-1, 1))
>>> [x*next(cyc) for x in lis[0]]
[-10, 13, -17]
Вы также можете использовать zip
здесь:
>>> cyc = cycle((-1, 1))
>>> [x*y for x, y in zip(lis[0], cyc)]
[-10, 13, -17]
Ответ 3
List1 = [[10,-13,17],[3,5,1],[13,11,12]]
num = 50
for i in List1[0]:num -= i
print num
Ответ 4
50 - List1[0][0] + List[0][1] - List[0][2]
List[0]
дает вам первый список в списке (попробуйте print List[0]
). Затем вы индексируете его снова, чтобы получить элементы этого списка. Подумайте об этом так: (List1[0])[0]
.
Ответ 5
for l in list1:
val = 50 - l[0] + l[1] - l[2]
print "val:", val
Прокрутите список и выполните операцию над подсписком, как вы хотели.
Ответ 6
Этот код будет печатать каждый отдельный номер:
for myList in [[10,13,17],[3,5,1],[13,11,12]]:
for item in myList:
print(item)
Или для вашего конкретного варианта использования:
((50 - List1[0][0]) + List1[0][1]) - List1[0][2]