如何在Python 3中获取列表中的列表编号?

时间:2018-06-18 08:03:22

标签: python python-3.x list

我试图获取包含特定数字的嵌套列表的编号。这是我的代码:

listo = [[1,2],[3,4,5]]
for x in listo:
    if 3 in x:
       print(len(x))

我想在这里得到的是其中有3个嵌套列表的编号。我的代码返回3因为我是函数len,它只返回嵌套列表中具有该数字的项目数。输出应为:

2

由于数字3位于第二个嵌套列表中。计数从1开始,而不是从0开始。

如何获得正确的输出?

5 个答案:

答案 0 :(得分:6)

使用enumerate

listo = [[1,2], [3,4,5]]

res = next(i for i, sublist in enumerate(listo) if 3 in sublist)
print(res)  # -> 1

注意Python是0-index languange;列表中的第一个元素的索引号为0.这就是上面的代码返回1的原因。如果您想获得2,那么只需添加1,或者更好的是,使用枚举(start)的可选enumerate(listo, 1)参数。

要使上述防错 1 ,您可以指定在3不在任何子列表中时返回的默认值。

res = next((i for i, sublist in enumerate(listo) if 3 in sublist), 'N\A')

1 next如果耗尽了迭代而没有找到要返回的内容,则会引发StopIteration除非提供默认值。

答案 1 :(得分:5)

使用enumerate将起始值指定为1

listo = [[1,2],[3,4,5]]
for i, x in enumerate(listo, 1):
    if 3 in x:
        print(i)

# 2

答案 2 :(得分:1)

使用枚举以获取数组中元素的索引。

l1 = ["eat","sleep","repeat"]

# printing the tuples in object directly
for ele in enumerate(l1):
    print ele

Output:
(0, 'eat')
(1, 'sleep')
(2, 'repeat')

上述代码可以使用相同的内容。

listo = [[1,2,3],[4,5]]
for ind,x in enumerate(listo):
     if 3 in x:
        print(ind)

答案 3 :(得分:1)

您可以使用enumerate。但是,如果您是编码的新手,那么此简单代码会很好。

保留一个额外的变量(计数),该变量将跟踪当前列表的索引。

listo = [[1,2],[3,4,5]]
count = 0
for x in listo:
    count += 1
    if 3 in x:
        print(count)

答案 4 :(得分:0)

只需使用enumerate()即可。 enumerate()返回一个(元素计数,元素)对:

for count, element in enumerate(listo):
    if 3 in element:
        print(count + 1)
        # Account for one-based indexing