簡體   English   中英

在二維列表中查找最大的偶數

[英]Finding the largest even number in a 2D list

我寫了一些代碼,但我無法弄清楚它有什么問題,因為我得到了錯誤的 output。 所以我必須在二維列表中找到最大的偶數,然后將該數字放入列表中,如果沒有偶數列表應該為空。 我不允許使用內置的 python 命令,只能使用循環和條件。

def largest_even(matrix):
    listeven = []
    maximum = matrix[0][0]

    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if (matrix[i][j] % 2 == 0) and (matrix[i][j] > maximum):
                maximum = matrix[i][j]
                listeven.append(maximum)
return listeven

測試文件:

from functions import largest_even

matrix = [[12, 17, 49, 61], [38, 18, 82, 77], [83, 53, 12, 10]]
listeven = largest_even(matrix)
print(listeven)

Output: [38,82] 我應該只得到 [82] 因為它是最大的偶數

def largest_even(matrix):
    max1=float('-inf')
    for o1 in matrix:
        for o2 in o1:
            if  max1<o2 and o2%2==0:
                max1=o2
    return [] if max1==float('-inf') else [max1]

我假設您不能使用max ,因為它是內置的 function,但對於其他人來說,這是一個不錯的單線:

max(([val] for row in matrix for val in row if val % 2 == 0), default=[])

您好請將您的最大值聲明為數字而不是二維矩陣形式,您的代碼很好,只需更改最大值的聲明(您不需要將最大值聲明為矩陣,而是作為 INT 就可以了)

   def largest_even(matrix):
    maximum = 0

    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if (matrix[i][j] % 2 == 0) and (matrix[i][j] > maximum):
                maximum = matrix[i][j]
    if maximum != 0 return [maximum] else []

應該可以正常工作:)

你的結果將是 [82]

有幾個缺陷:

  • 您將matrix[0][0]分配為最大值。 如果這恰好是 2D 矩陣中的最大數字,那么無論矩陣中的值如何,您都會有空listeven
  • 每次你找到比當前最大值更大的偶數時,你listeven它會列出

無需通過索引訪問項目。 Python 允許您直接迭代。 為了遵循要求(“在二維列表中找到最大的偶數,然后將該數字放入列表中,如果沒有偶數列表應該為空 /../ 只有循環和條件”)並獲得所需的結果,您可以寫吧:

def largest_even_2(matrix):
    max_even = []
    for row in matrix:
        for item in row:
            if item % 2 == 0 and max_even[:1] < [item]:
                max_even = [item]
    return max_even

您可以使用此循環與之前的最大值進行比較,最初等於 -infinity。

l = [[12, 17, 49, 61], [38, 18, 82, 77], [83, 53, 12, 10]]
maximum = -float("Inf")
for sublist in l:
     for element in sublist :
             if element % 2 == 0 and maximum < element :
                     maximum = element

在循環結束時, maximum將等於82

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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