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