簡體   English   中英

在二維列表中計算偶數?

[英]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 == 1False == 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM