Доступ к значениям во вложенном списке

Начиная с трехмерного списка:

 alist = [[[1,2],[3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]]

 

Доступ к элементам в списке:

 print(alist[0][0][1])
#2
#Accesses second element in the first list in the first list

print(alist[1][1][2])
#10
#Accesses the third element in the second list in the second list

 

Выполнение вспомогательных операций:

 alist[0][0].append(11)
print(alist[0][0][2])
#11
#Appends 11 to the end of the first list in the first list

 

Использование вложенных циклов for для печати списка:

 for row in alist: #One way to loop through nested lists
    for col in row:
        print(col)
#[1, 2, 11]
#[3, 4]
#[5, 6, 7]
#[8, 9, 10]
#[12, 13, 14]

 

Обратите внимание, что эта операция может использоваться для понимания списка или даже в качестве генератора для повышения эффективности, например:

 [col for row in alist for col in row]
#[[1, 2, 11], [3, 4], [5, 6, 7], [8, 9, 10], [12, 13, 14]]


 

Не все элементы во внешних списках должны быть самими списками:

 alist[1].insert(2, 15)
#Inserts 15 into the third position in the second list

 

Еще один способ использовать вложенные циклы. Другой способ лучше, но мне нужно было использовать это иногда:

 for row in range(len(alist)): #A less Pythonic way to loop through lists
    for col in range(len(alist[row])):
       print(alist[row][col])

#[1, 2, 11]
#[3, 4]
#[5, 6, 7]
#[8, 9, 10]
#15
#[12, 13, 14]

 

Использование фрагментов во вложенном списке:

 print(alist[1][1:])
#[[8, 9, 10], 15, [12, 13, 14]]
#Slices still work

 

Финальный список:

 print(alist)
#[[[1, 2, 11], [3, 4]], [[5, 6, 7], [8, 9, 10], 15, [12, 13, 14]]]