在Python中遍历嵌套列表的索引

15

有人可以告诉我如何调用嵌套列表中的索引吗?

通常我只是这样写:

for i in range(len(list))

但是如果我有一个包含嵌套列表的列表呢,就像下面这样:
Nlist = [[2, 2, 2], [3, 3, 3], [4, 4, 4], ...]

我想单独遍历每个索引,你能帮忙吗?

1
你需要重新写出你的问题并让它更加清晰明了。你使用的“indexes”这个词可能有问题,也许你是指“items”? - tzot
这是一个关于遍历嵌套列表的问题,其他则是关于比较嵌套列表的问题。 - Kev
6个回答

25

如果您确实需要索引,您可以针对内部列表再次执行您所说的操作:

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]

但更符合Python的风格是直接遍历列表本身:

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]

3
这很有帮助,但我讨厌你使用变量“l”,“i”和“1”。非常难以阅读和区分,我不知道为什么人们要在他们的示例中这样做。 - Aspen

5

尝试以下设置:

a = [["a","b","c",],["d","e"],["f","g","h"]]

要打印第一个列表中的第二个元素("b"),请使用print a[0][1] - 要打印第三个列表中的第二个元素("g"):print a[2][1]

第一对方括号引用您正在访问的嵌套列表,第二对方括号引用该列表中的项。


2
你可以这样做,根据自己的情况进行调整:
  for l in Nlist:
      for item in l:
        print item

0

问题标题太宽泛,作者需要更具体的内容。在我的情况下,我需要从嵌套列表中提取所有元素,就像下面的示例一样

示例:

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)

-1
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]


这个片段是一个不必要的重新发明 chain.from_iterable - user6655984

-1

我认为你想同时且分别地访问列表的值和其索引:

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]}'  )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接