python - open - kaggle datasets
Si todo en la lista== algo (4)
Usando Python 2.6, ¿hay alguna manera de verificar si todos los elementos de una secuencia son iguales a un valor dado, en una declaración?
[pseudocode]
my_sequence = (2,5,7,82,35)
if all the values in (type(i) for i in my_sequence) == int:
do()
En lugar de, digamos:
my_sequence = (2,5,7,82,35)
all_int = True
for i in my_sequence:
if type(i) is not int:
all_int = False
break
if all_int:
do()
Quieres decir
all( type(i) is int for i in my_list )
?
Editar: Cambiado a is
. Un poco más rápido.
Utilizar:
all( type(i) is int for i in lst )
Ejemplo:
In [1]: lst = range(10)
In [2]: all( type(i) is int for i in lst )
Out[2]: True
In [3]: lst.append(''steve'')
In [4]: all( type(i) is int for i in lst )
Out[4]: False
[Editar]. Hecho más limpio según los comentarios.
En aras de la exhaustividad, pensé que agregaría el hecho de que el ''todo'' de NumPy es diferente del ''todo'' incorporado. Si, por ejemplo, ejecuta Python a través de Python (x, y), NumPy se carga automáticamente (y no se puede descargar, por lo que sé), por lo que cuando se intenta ejecutar el código anterior, se obtienen resultados bastante inesperados:
>>> if (all(v == 0 for v in [0,1])):
... print ''this should not happen''
... this should not happen
Más información sobre esto está en question numpy, todos difieren de todos integrados . Como solución, puede rodear el generador con corchetes para producir una lista:
>>> all( [v == 0 for v in [0,1]] )
False
O llame a la función integrada explícitamente:
>>> __builtins__.all(v == 0 for v in [0,1,''2''])
False
Encontré una manera de evitar que Spyder importase NumPy por defecto: lista de importación del módulo predeterminado de Spyder