我试图获取包含特定数字的嵌套列表的编号。这是我的代码:
listo = [[1,2],[3,4,5]]
for x in listo:
if 3 in x:
print(len(x))
我想在这里得到的是其中有3个嵌套列表的编号。我的代码返回3因为我是函数len,它只返回嵌套列表中具有该数字的项目数。输出应为:
2
由于数字3位于第二个嵌套列表中。计数从1开始,而不是从0开始。
如何获得正确的输出?
答案 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