Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计数与变量不同的列表/元组元素?_Python_List_Count_Elements - Fatal编程技术网

Python 计数与变量不同的列表/元组元素?

Python 计数与变量不同的列表/元组元素?,python,list,count,elements,Python,List,Count,Elements,我有列表或/和元组: MyVar = [0,0,0,0,1,0,0,0,0] 我想计算其中与0不同的元素 如何做到这一点?您可以尝试: >>> len(filter(lambda x: x != 0, MyVar)) 1 尝试使用过滤器(): 获取所有非0元素的子列表的长度 MyVar = [0,0,0,0,1,0,0,0,0] len([x for x in MyVar if x != 0]) >> 1 无需生成列表,只需: len(MyVar) - MyV

我有列表或/和元组:

MyVar = [0,0,0,0,1,0,0,0,0]
我想计算其中与
0
不同的元素

如何做到这一点?

您可以尝试:

>>> len(filter(lambda x: x != 0, MyVar))
1
尝试使用
过滤器()


获取所有非0元素的子列表的长度

MyVar = [0,0,0,0,1,0,0,0,0]
len([x for x in MyVar if x != 0])
>> 1

无需生成列表,只需:

len(MyVar) - MyVar.count(0)

虽然没有上面任何一个答案那么有效,但还是简单明了

myVar = [0,0,0,0,1,0,0,0,0]
count = 0

for var in myVar:
    if var != 0:
        count += 1

以下方面应起作用:

>>> MyVar = [0,0,0,0,1,0,0,0,0]
>>> sum(map(bool, MyVar))
1

如果元素为非零,它将把列表转换为布尔值列表,值为
True
。然后,它将通过隐式地考虑
True
具有值1和
False
具有值0来求和所有元素。

您可以对不需要任何中间列表或不必要的算术运算的条件生成器表达式进行
求和

>>> sum(1 for element in MyVar if element != 0)
1
或者正如@Jean François Fabre所指出的:

>>> sum(1 for element in MyVar if element)
1
如果
MyVar
仅包含数字,则计算非零值的数量。

使用from functools:

from functools import reduce

reduce((lambda x, y: x + (y>0)), MyVar, 0)
一行:)

使用迭代器之和:

sum(x != 0 for x in MyVar)

在Python3中不起作用。您不必将参数传递给筛选器。只需传递
None
BTW.:
len(list(filter(None,MyVar))
@Jean-Françoisfare好在这个问题上没有python3标签:)对于我来说,现在的答案应该与python3兼容,除非另有说明。python 2已经成为历史。@Jean Françoisfaber“……除非另有说明”。比如,在这个问题上有一个python2.7标签……好吧,这只是一个评论。
过滤器(无,
部分很有趣,但是您应该尝试一下。对于
MyVar=[0,0,0,0,1,0,0,0,3]
将返回
1+3=4
true。OP示例不具有代表性,一如既往:)使用
is
is
来比较值可能不是一个好主意。这只是一个实现细节,
0
是一个常量,在CPython中它只是一个常量<代码>=会更好。或者
求和(MyVar if element中的元素为1)
在“不为零”和“是真实的”之间有细微的区别,而问题是“不为零”。在这种情况下,两者都会给出相同的结果,但如果列表包含一些奇怪的值,例如空字符串/元组/dicts/列表,它们就不会给出相同的结果。类似的问题:在MyVar中,它应该是x代表x吗?为什么?我正在做一个sumWell投票被否决的不是我,但我只是猜测你为什么会收到它。
f = sum([1 for x in MyVar if x!= 0])
sum(x != 0 for x in MyVar)