Python中的多参数'in

2 投票
5 回答
700 浏览
提问于 2025-04-16 11:39

假设我们有一个列表 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)

撰写回答