检查列表中是否至少有一个值不是某个值

2024-06-17 13:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一种方法来找出列表中哪个元素不是""
例如:
['','','b']
它应该返回2,因为"b"的索引是2


Tags: 方法元素列表
3条回答

您可以使用一个简单的for循环并检查该值是否不是“”,然后将该值的索引保存在列表理解中以解决您的问题

test = ['','','b'] 
print([test.index(x) for x in test if x != ''][0]) # output 2

一个好的、快速的方法可以将^{}^{}generator expression一起使用:

next(index for index,item in enumerate(mylist) if item != '')

这非常有效;一旦找到匹配项,它就会停止检查。如果列表中的所有内容都是'',它将抛出一个StopIteration异常。如果你想要一个默认值,那么说-1:

^{pr2}$

下面使用enumerate将每个元素绑定到一个数字索引,然后我们过滤数组中的非空字符串。在

如果需要所有实例:

test = ['','','b'] 
print(filter(lambda a: a[1] != "", enumerate(test)))

返回

^{pr2}$

如果只需要第一个实例:

test = ['','','b'] 
print(filter(lambda a: a[1] != "", enumerate(test))[0][0])

如果需要所有实例的列表:

test = ['','','b'] 
print([ele[0] for ele in filter(lambda a: a[1] != "", enumerate(test))])

相关问题 更多 >