嵌套列表python

时间:2011-11-18 21:08:44

标签: python

有谁能告诉我如何在嵌套列表中调用索引?

一般来说我只写:

for i in range (list)

但如果我有一个嵌套列表的列表如下所示:

Nlist = [[2,2,2],[3,3,3],[4,4,4]...]

我想分别浏览每一个的索引?

6 个答案:

答案 0 :(得分:20)

如果你真的需要索引,你可以按照内部列表再做一遍你所说的话:

l = [[2,2,2],[3,3,3],[4,4,4]
for i1 in xrange(len(l)):
    for i2 in xrange(len(l[i1])):
        print i1, i2, l[i1][i2]

但是迭代列表本身更加pythonic:

for inner_l in l:
    for item in inner_l:
        print item

如果您确实需要索引,还可以使用enumerate

for i1, inner_l in enumerate(l):
    for i2, item in enumerate(inner_l):
        print i1, i2, item, l[i1][i2]

答案 1 :(得分:5)

尝试此设置:

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

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

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

答案 2 :(得分:2)

你可以这样做。根据您的情况调整:

  for l in Nlist:
      for item in l:
        print item

答案 3 :(得分: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)

答案 4 :(得分:-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]

答案 5 :(得分:-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]}'  )