我有一个列表列表,我想找到长度不是4的子列表的索引。这就是列表的样子:
l = [['"a"','"b"','"c"','"d"'],['"a"','"b"','"c"','"d"'],['"a"','"b"','"c"','"d"','"e"']
第三个子列表的长度不是4,因此我必须向用户报告第三行的长度不正确。
这是我的代码:
x = max(len(l) for i in l)
if x == 4:
return True
elif x != 4:
for i in l:
c = l.index(i)
print(c) #returns 4...
编辑:第一个子列表实际上是一个标题,因此只应返回带有错误的子列表的索引。
答案 0 :(得分:0)
使用next()
和enumerate()
:
index = next(i for i, sublist in enumerate(l) if len(l) != 4)
如果所有子列表的长度为4或没有子列表,则会引发StopIteration
。您可以要求next()
返回默认值:
index = next((i for i, sublist in enumerate(l) if len(l) != 4), None)
答案 1 :(得分:0)
怎么样
>>> [len(v) == 4 for v in l].index(False)
2