在二维列表中统计均衡?

时间:2013-02-11 07:55:17

标签: python

嘿伙计们,我正在尝试制作一个计算二维列表中的平均值的程序。到目前为止,我所制作的节目并未归还我想要的内容。

def Evens(x):
    count = 0
    x = len(x)
    for a in range(x):
        if a%2 == 0:
            count = count + 1
    return count
当我希望它返回时,

继续为列表Evens([[1,3],[1,9,7,1,3],[13]])返回2.我尝试了所有内容,但它似乎无法正常工作。

由于

4 个答案:

答案 0 :(得分:3)

您遇到的问题是您正在检查索引以查看它们是否均匀,而不是值。你也没有检查子列表。

IMO更直接的做法是:

import itertools
def evens(x):
    return sum(a % 2 == 0 for a in itertools.chain.from_iterable(x))

答案 1 :(得分:3)

您需要实际迭代子列表。

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 == 1False == 0中的事实,因此您将获得预期的结果。

答案 2 :(得分:2)

您需要遍历所有子列表:

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

答案 3 :(得分:0)

您还需要迭代每个子列表中的元素:

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元素的列表。您的代码正常运行,但无法正常运行。