16

假设所有 w、x、y 和 z 都可以在列表 A 中。是否有检查它是否包含x 的快捷方式——例如。不否定其他变量?

w、x、y 和 z 都是单个值(不是列表、元组等)。

4

8 回答 8

29
A=[w,y,x,z]
all(p == x for p in A)
于 2012-08-31T21:35:29.750 回答
19

那,或者如果您不想处理循环:

>>> a = [w,x,y,z]
>>> a.count(x) == len(a) and a

and a添加以检查空列表)

于 2012-08-31T22:21:36.440 回答
4

这将检查所有elements inA是否等于x不参考任何其他变量:

all(element==x for element in A)
于 2012-08-31T21:38:41.950 回答
4

如果列表中的所有项目都是可散列的:

set(A) == set([x])
于 2012-08-31T21:39:08.597 回答
4
{x} == {w,x,y,z} & set(A)

如果所有[w,x,y,z]和其中的项目A都是可散列的,这将起作用。

于 2012-08-31T21:40:05.540 回答
1

我不确定如果不否定其他变量意味着什么,但我怀疑这就是你想要的:

if all(item == x for item in myList): 
    #do stuff
于 2012-08-31T21:39:17.067 回答
1

这是另一种方式:

>>> [x] * 4 == [x,w,z,y]

许多已经说过的。

于 2012-08-31T21:56:54.077 回答
0

这个问题有两种解释:

首先,是 [w,y,z] 中包含的 x 的值:

>>> w,x,y,z=1,2,3,2
>>> any(x == v for v in [w,y,z])
True
>>> w,x,y,z=1,2,3,4
>>> any(x == v for v in [w,y,z])
False

或者这可能意味着它们代表同一个对象:

>>> w,x,y,z=1,2,3,4
>>> any(x is v for v in [w,y,z])
False
>>> w,x,y,z=1,2,3,x
>>> any(x is v for v in [w,y,z])
True
于 2012-08-31T21:57:18.787 回答