用于检查Python序列中的多个元素的样式

时间:2011-12-15 13:08:53

标签: python coding-style

我经常发现自己编写这样的代码:

tupla = (1, 2, 3, 4)
if (1 in tupla) and (4 in tupla):
    ...

是否有任何Pythonic方式可以更紧凑地编写,而无需两次输入tupla

2 个答案:

答案 0 :(得分:5)

if all(x in tupla for x in list_of_x):

if set(list_of_x).issubset(set(tupla)):

第一个x不在tupla时,第一个会停止。第二个将在任何情况下创建两个集合。

答案 1 :(得分:2)

您的代码所要求的基本上是

  

[1,4]是tupla子集吗?

您可以直接表达此问题:

In [14]: set([1, 4]).issubset(tupla)
Out[14]: True

In [15]: set([1, 4, 7]).issubset(tupla)
Out[15]: False

或更简洁:

In [18]: set([1, 4]) <= set(tupla)
Out[18]: True

In [19]: set([1, 4, 7]) <= set(tupla)
Out[19]: False