tuplas - sacar elementos de una lista python
¿Contar los elementos de la lista/tupla que son diferentes a las variables? (10)
Tengo una lista o / y tupla:
MyVar = [0,0,0,0,1,0,0,0,0]
Y quiero contar elementos en esto que son diferentes de 0
.
¿Como hacer eso?
Con reducir de functools:
from functools import reduce
reduce((lambda x, y: x + (y>0)), MyVar, 0)
Lo siguiente debería funcionar:
>>> MyVar = [0,0,0,0,1,0,0,0,0]
>>> sum(map(bool, MyVar))
1
Convertirá la lista en una lista de booleanos, con el valor True
si un elemento es distinto de cero. Luego sumará todos los elementos implícitamente considerando que True
tiene el valor 1 y False
tiene el valor 0.
No es necesario generar listas, simplemente:
len(MyVar) - MyVar.count(0)
No es tan eficiente como cualquiera de las respuestas anteriores, pero simple y directo de todos modos
myVar = [0,0,0,0,1,0,0,0,0]
count = 0
for var in myVar:
if var != 0:
count += 1
Obtenga la longitud de la lista secundaria de todos los elementos que no son 0
MyVar = [0,0,0,0,1,0,0,0,0]
len([x for x in MyVar if x != 0])
>> 1
Pruebe con filter()
:
>>> my_var = [0, 0, 0, 0, 1, 0, 0, 0, 0]
>>> result = filter(lambda x: x > 0, my_var)
[1]
>>> print(len(result))
1
Puede hacer una sum
sobre una expresión de generador condicional que no requiere ninguna lista intermedia ni operaciones aritméticas innecesarias:
>>> sum(1 for element in MyVar if element != 0)
1
o como lo señala @ Jean-François Fabre:
>>> sum(1 for element in MyVar if element)
1
En caso de que MyVar
solo contenga números, esto cuenta el número de valores distintos de cero.
Tu podrías intentar:
>>> len(filter(lambda x: x != 0, MyVar))
1
Usando la suma del iterador:
sum(x != 0 for x in MyVar)
f = sum([1 for x in MyVar if x!= 0])
Una línea :)