多参数';在';用python

多参数';在';用python,python,Python,让L=[1,2,3,4]成为我们的清单 那么L中的1为True2也是True 有没有一种干净的方法可以用L写(1,2)并实现它 也就是说,给定一个列表L和一个测试列表T以及关系multi-in,如果T的所有成员都在L中,则T multi-in-L为True,否则T multi-in-in-L为False 当然我可以写一个多输入函数,但这看起来很难看。你想把(1,2)和L当作sets: set((1,2)).issubset(L) 或者,如果您理解符号,则更好: set((1,2)) <=

L=[1,2,3,4]
成为我们的清单

那么L中的
1
True
中的code>2也是
True

有没有一种干净的方法可以用L写
(1,2)并实现它

也就是说,给定一个列表
L
和一个测试列表
T
以及关系multi-in,如果
T
的所有成员都在
L
中,则
T multi-in-L
True
,否则
T multi-in-in-L
False

当然我可以写一个多输入函数,但这看起来很难看。

你想把
(1,2)
L
当作
set
s:

set((1,2)).issubset(L)
或者,如果您理解符号,则更好:

set((1,2)) <= set(L)
set((1,2))怎么样:

set((1,2)).issubset(L)
使用集合:

  s = set([1,2])
  l = set([1,2,3,4])

  s.issubset(l)

.issubset()
方法将告诉您一个集合中的所有元素是否都存在于另一个集合中。

以上回答很好。另一种可能性是:

all(x in L for x in [1,2,3,4])
我不是荷兰人,但这对我来说是“唯一显而易见的方法”

与基于集合的解决方案不同,这(1)在未找到元素时立即短路,(2)适用于不可损坏的类型,(3)读取nice;)


我们可以通过返回集合来提高复杂性(
O(n*m)
当前)。。。尽管以不同的方式:事先将
L
转换为一个集合,然后您将获得
O(1)
成员资格测试(不需要第二个集合来检查项目)。

我们是否知道
issubset
@Andrew:它肯定会创建两个完整的集合。我希望
issubset
缩短curcuit,但这缩短了第三次迭代(1.L->set 2.items->set 3.issubset),而不是第二次迭代(1.L->set 2.genexpr)。
all(x in L for x in [1, 2])