给定一个显式列表,其中包含每个包含元素的集合,如何检查特定元素是否在列表中?它应该只是一行代码。
例如:X
是一个列表。它包含集A
,B
和C
。假设集A
包含{x, y, z}
,B
包含{l, m}
,C
包含{o, p}
。如果我要查看列表中是否有x
,我该怎么办呢?
答案 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}