Python:在列表中搜索

时间:2015-01-26 08:14:45

标签: python

给定一个显式列表,其中包含每个包含元素的集合,如何检查特定元素是否在列表中?它应该只是一行代码。

例如:X是一个列表。它包含集ABC。假设集A包含{x, y, z}B包含{l, m}C包含{o, p}。如果我要查看列表中是否有x,我该怎么办呢?

3 个答案:

答案 0 :(得分:1)

我想该行是any(x in s for s in l),如

>>> l = [{1, 2, 3}, {4, 5}, {6}]
>>> x = 5
>>> any(x in s for s in l)
True

它有一个额外的好处,就是不创建新实例,在找到x之后不接触更多集合,它不依赖于l包含集合的事实(它可以是任何可迭代的事物) )。

答案 1 :(得分:1)

x = [set((1, 2, 3)), set((4, 5)), set((6, 7))]
print set.union(*x)
print 1 in set.union(*x)
print 8 in set.union(*x)

创建一组所有当前集合的并集。使用它,检查存在是微不足道的。

答案 2 :(得分:0)

一种方法可以是构建一个包含列表中所有集合元素的集合,并检查此超集中是否存在元素:

l = [{1},{2,3},{4,5}]
if 3 in {x for s in l for x in s}:
    print("Here you are!")

正如您在上面所看到的,通过设置理解,您可以只用一行并以一种非常pythonic的方式执行检查:

3 in {x for s in l for x in s}