найти максимум списка во вложенных списках - PullRequest
0 голосов
/ 16 января 2019
a=[int(i) for i in input().split()]
b=[]
for i in range(a[0]):
    x=[int(i) for i in input().split()]
    b.append(x)
print(b)
c=[]    
for j in range(len(b)):
  c.append(max(b[i]))
print(b[0])
print(c)
2
1 3 45 6 8 
2 4 56 7 
[[1, 3, 45, 6, 8], [2, 4, 56, 7]]
[1, 3, 45, 6, 8]
[56, 56, 56]

Я хочу поместить все элементы max каждого списка от b до c. но я продолжаю получать максимальный элемент всего списка, пока я хочу максимум каждого списка во вложенных списках, который составляет [45,56]

Ответы [ 3 ]

0 голосов
/ 16 января 2019

У вас есть 2D-список, и вы пытаетесь вернуть список максимумов для каждого элемента в этом 2D-списке. Выполните итерацию по 2D-списку и возьмите максимум для каждого элемента:

res = [max(i) for i in nested_list]

Дополнительно вы также можете использовать map:

res = list(map(max, nested_list))
0 голосов
/ 16 января 2019

Вы также можете преобразовать свой вложенный список в Pandas Dataframe и использовать функцию max. Тогда вам не придется беспокоиться о петлях.

In [350]: import pandas as pd

In [342]: l = [[1, 3, 45, 6, 8], [2, 4, 56, 7]]

In [343]: pd.DataFrame(l)
Out[343]: 
   0  1   2  3    4
0  1  3  45  6  8.0
1  2  4  56  7  NaN

In [347]: pd.DataFrame(l).max(axis=1).tolist()
Out[347]: [45.0, 56.0]
0 голосов
/ 16 января 2019

Вы можете использовать понимание списка , которое берет максимум для каждого подсписка l:

b = [[1, 3, 45, 6, 8], [2, 4, 56, 7]]
c = [max(l) for l in b]

print(c)

выход

[45, 56]

Приведенное выше понимание списка эквивалентно следующему циклу for:

c = []
for l in b:
    c.append(max(l))
...