Вложенные списки python
Может кто-нибудь сказать мне, как я могу вызвать индексы во вложенном списке?
Обычно я просто пишу:
for i in range (list)
но что если у меня есть список с вложенными списками, как показано ниже:
Nlist = [[2,2,2],[3,3,3],[4,4,4]...]
и я хочу просмотреть индексы каждого из них в отдельности?
Ответы
Ответ 1
Если вам действительно нужны индексы, вы можете просто сделать то, что вы сказали снова для внутреннего списка:
l = [[2,2,2],[3,3,3],[4,4,4]]
for index1 in xrange(len(l)):
for index2 in xrange(len(l[index1])):
print index1, index2, l[index1][index2]
Но более логично перебирать сам список:
for inner_l in l:
for item in inner_l:
print item
Если вам действительно нужны индексы, вы также можете использовать enumerate
:
for index1, inner_l in enumerate(l):
for index2, item in enumerate(inner_l):
print index1, index2, item, l[index1][index2]
Ответ 2
Попробуйте эту настройку:
a = [["a","b","c",],["d","e"],["f","g","h"]]
Чтобы напечатать второй элемент в первом списке ( "b" ), используйте print a[0][1]
- для второго элемента в 3-м списке ( "g" ): print a[2][1]
Первые скобки ссылаются на список вложенных списков, вторая пара ссылается на элемент в этом списке.
Ответ 3
Вы можете это сделать. Адаптируйте его к своей ситуации:
for l in Nlist:
for item in l:
print item
Ответ 4
Название вопроса слишком широкое, и автор нуждается в более конкретной информации. В моем случае мне нужно было извлечь все элементы из вложенного списка, как в примере ниже:
Пример:
input -> [1,2,[3,4]]
output -> [1,2,3,4]
Приведенный ниже код дает мне результат, но я хотел бы знать, может ли кто-нибудь создать более простой ответ:
def get_elements_from_nested_list(l, new_l):
if l is not None:
e = l[0]
if isinstance(e, list):
get_elements_from_nested_list(e, new_l)
else:
new_l.append(e)
if len(l) > 1:
return get_elements_from_nested_list(l[1:], new_l)
else:
return new_l
Вызов метода
l = [1,2,[3,4]]
new_l = []
get_elements_from_nested_list(l, new_l)
Ответ 5
n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten(lists):
results = []
for numbers in lists:
for numbers2 in numbers:
results.append(numbers2)
return results
print flatten(n)
Вывод: n = [1,2,3,4,5,6,7,8,9]
Ответ 6
Я думаю, что вы хотите получить доступ к списочным значениям и их индексам одновременно и по отдельности:
l = [[2,2,2],[3,3,3],[4,4,4],[5,5,5]]
l_len = len(l)
l_item_len = len(l[0])
for i in range(l_len):
for j in range(l_item_len):
print(f'List[{i}][{j}] : {l[i][j]}' )