让L = [1,2,3,4]
成为我们的列表。python中的多参数'in'
然后1 in L
是True
。 2 in L
也是True
。
有没有一种干净的方式来写(1,2) in L
并使它出现真实?
也就是说,给出一个列表L
和测试列表T
和关系多的,如果T
所有成员都在L
,然后T multi-in L
是True
,否则T multi-in L
是False
。
当然,我可以写一个多功能的,但看起来很丑。
让L = [1,2,3,4]
成为我们的列表。python中的多参数'in'
然后1 in L
是True
。 2 in L
也是True
。
有没有一种干净的方式来写(1,2) in L
并使它出现真实?
也就是说,给出一个列表L
和测试列表T
和关系多的,如果T
所有成员都在L
,然后T multi-in L
是True
,否则T multi-in L
是False
。
当然,我可以写一个多功能的,但看起来很丑。
你要正确对待(1,2)
和L
为set
S:
set((1,2)).issubset(L)
,或者更好,如果你了解的符号:
set((1,2)) <= set(L)
如何:
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])
我不是荷兰人,但这是对我来说“唯一明显的做法”。
all(x in L for x in [1, 2])
不同于基于集合的解决方案,则该(1)的短curcuits一旦元件被没有发现,(2)适用于unhashable类型和(3)中读出漂亮;)
我们可以通过返回设置来改进复杂性(O(n*m)
)...虽然以不同的方式:预先将L
转换为一组,然后您将获得O(1)
成员资格测试(无需第二组检查项目) 。
我们知道`issubset`或`<=`不会短路吗? – 2011-02-11 19:06:58
这很不错! – 2011-02-11 18:43:57