Mah*_*lam 2 python list python-3.x
我试图获取包含特定数字的嵌套列表的编号.这是我的代码:
listo = [[1,2],[3,4,5]]
for x in listo:
if 3 in x:
print(len(x))
Run Code Online (Sandbox Code Playgroud)
我想在这里得到的是嵌套列表的数量,其中包含3个.我的代码返回3因为我是函数len,它只返回嵌套列表中具有该数字的项目数.输出应该是:
2
Run Code Online (Sandbox Code Playgroud)
由于数字3位于第二个嵌套列表中.计数从1开始,而不是0.
如何获得正确的输出?
使用枚举:
listo = [[1,2], [3,4,5]]
res = next(i for i, sublist in enumerate(listo) if 3 in sublist)
print(res) # -> 1
Run Code Online (Sandbox Code Playgroud)
注意Python是0-index languange; 列表中的第一个元素的索引号为0.这就是上面的代码返回的原因1.如果你想获得2,那么,只需添加1,或者更好,使用startenumerate(enumerate(listo, 1))的可选参数.
要制作上述防错1,您可以指定在3不在任何子列表中的情况下返回的默认值.
res = next((i for i, sublist in enumerate(listo) if 3 in sublist), 'N\A')
Run Code Online (Sandbox Code Playgroud)
除非提供默认值,否则如果耗尽迭代而没有找到要返回的内容,则会next引发1.StopIteration
使用enumerate指定起始值为1:
listo = [[1,2],[3,4,5]]
for i, x in enumerate(listo, 1):
if 3 in x:
print(i)
# 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |