[英]Counting evens in a two-dimensional list?
大家好,我正在尝试制作一个计算二维列表中偶数的程序。 到目前为止,我编写的程序没有返回我想要的程序。
def Evens(x):
count = 0
x = len(x)
for a in range(x):
if a%2 == 0:
count = count + 1
return count
当我希望它返回4时,它总是返回2的清单Evens([[1,3],[1,9,7,1,3],[13]])
。工作正常。
谢谢
您遇到的问题是您正在检查索引以查看它们是否为偶数,而不是值。 您也没有签入子列表。
IMO更简单的方法是:
import itertools
def evens(x):
return sum(a % 2 == 0 for a in itertools.chain.from_iterable(x))
您实际上需要遍历子列表。
def evens(l):
count = 0
for l2 in l:
for i in l2:
if i%2 == 0:
count += 1
return count
或者,您可以采用更简单的方法。
def evens(l):
return sum(i%2==0 for l2 in l for i in l2)
第二种方法使用的事实是,在整数上下文中, True == 1
和False == 0
,因此您将获得预期的结果。
您需要遍历所有子列表:
In [34]: l = [[1,4,3],[12,0,7,10,3],[13]]
In [35]: sum(n%2 == 0 for sub in l for n in sub)
Out[35]: 4
您还需要遍历每个子列表中的元素:
def count_evens(l):
total = 0
for l2 in l:
for item in l2:
if item % 2 == 0:
total += 1
return total
您之前所做的是遍历子列表的数量(例如[0, 1, 2, 3]
对于具有4
元素的列表[0, 1, 2, 3]
)。 您的代码可以正常工作,但是不能正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.