2012-08-31 28 views
6

Digamos que todos los w, x, y y z pueden estar en la lista A. ¿Hay un atajo para comprobar que contiene solo x - por ej. sin negar las otras variables?Comprobar si la lista contiene solo el elemento x

w, x, y, z son todos valores individuales (no listas, tuplas, etc.).

+0

¿Son w, x, y y z todos los valores individuales o listas? –

+0

@SteveMayne Todos los valores individuales. – idlackage

+1

Para que quede claro, con "todos los valores individuales", ¿se refiere a cosas como 'int' y' float' y 'str'ings, o podría (por ejemplo)' y' ser una 'lista'? – DSM

Respuesta

15
A=[w,y,x,z] 
all(p == x for p in A) 
4

Esto comprueba que todos los element s en A son iguales a x sin hacer referencia a ninguna otra variable:

all(element==x for element in A) 
+0

Creo que puede incluir múltiples x –

2

Si todos los elementos de la lista son hashable:

set(A) == set([x]) 
+0

esto es un poco ineficiente, ya que tiene que calcular el conjunto en lugar de simplemente iterar a través de 'A' una vez – Claudiu

+0

Sí. Simplemente más compacto. –

+0

En las versiones más nuevas puede usar '{x}' azúcar. – sdcvvc

0

I No estoy seguro de qué sin negar las otras variables significa, pero sospecho que esto es lo que hormiga:

if all(item == x for item in myList): 
    #do stuff 
2
{x} == {w,x,y,z} & set(A) 

Esto funcionará si todos [w,x,y,z] y elementos en A son hashable.

0

Heres otra manera:

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

de los muchos ya se ha dicho.

0

Hay dos interpretaciones a esta pregunta:

En primer lugar, es el valor de x contenida en [w, y, z]:

>>> 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 

O podría significar que representan el mismo objeto :

>>> 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 
10

Eso, o si no quiere tratar con un bucle:

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

Encontré que este método es 5 veces más rápido que la respuesta aceptada. –

Cuestiones relacionadas