Python中的多参数'in
假设我们有一个列表 L = [1,2,3,4]
。
那么 1 in L
的结果是 True
,也就是说1在这个列表里。2 in L
的结果也是 True
,也就是2也在这个列表里。
有没有简单的方法可以写 (1,2) in L
并且让它的结果是对的?
也就是说,给定一个列表 L
和一个测试列表 T
,如果 T
中的所有元素都在 L
里,那么 T multi-in L
就是 True
,否则就是 False
。
当然我可以写一个 multi-in 的函数,但那样看起来不太好。
5 个回答
1
使用集合:
s = set([1,2])
l = set([1,2,3,4])
s.issubset(l)
.issubset()
这个方法可以告诉你一个集合里的所有元素是否都在另一个集合里。
5
all(x in L for x in [1, 2])
跟基于集合的解决方案不同,这个方法有三个优点:(1) 一旦找不到某个元素就会立即停止,不会继续查找,(2) 可以处理那些不能被哈希的类型,(3) 读起来很顺畅;)
我们可以通过回到集合的方式来改善复杂度(目前是O(n*m)
),不过是用不同的方法:先把L
转换成一个集合,这样你就能得到O(1)
的成员测试(而不需要为要检查的项目再创建一个集合)。
8
你想把 (1,2)
和 L
看作是 集合
:
set((1,2)).issubset(L)
或者,如果你理解这个符号的话,会更好:
set((1,2)) <= set(L)