Во-первых, никогда не называйте свои списки list
, поскольку это делает list
структуру данных python бесполезной в последующем коде.
Код с комментариями:
my_list=[[12,9,10,5],[3,7,18,6],[1,2,3,3],[4,5,6,2]]
def maxColumn(my_list):
m = len(my_list)
n = len(my_list[0])
list2 = [] # stores the column wise maximas
for col in range(n): # iterate over all columns
col_max = my_list[0][col] # assume the first element of the column(the top most) is the maximum
for row in range(1, m): # iterate over the column(top to down)
col_max = max(col_max, my_list[row][col])
list2.append(col_max)
return list2
print(maxColumn(my_list)) # prints [12, 9, 18, 6]
Кроме того, хотя вы упомянули специально для решения без numpy, но в numpy это так просто:
list(np.max(np.array(my_list), axis=0))
Что просто говорит, преобразуйте my_list
в пустой массив, а затем найдите максимум по столбцам (ось = 0 означает, что вы перемещаетесь сверху вниз в вашем массиве).