在Python中查找嵌套列表中的最大数字

时间:2015-10-22 17:06:10

标签: python

我想把最大数字放到一个新的数组中,我已经尝试了所有我能想到的东西,但似乎都没有工作....(添加到空结果数组,concat等等)

显然for循环使用正确的数字打印max函数, 但我对return vs print以及如何从循环中捕获值等方面理解不足。

list = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
for i in list:
    print max(i)

345
555
777
666

5 个答案:

答案 0 :(得分:2)

只需将max应用于每个子列表:

Python 2:   map(max, lists)
Python 3:   list(map(max, lists))

当然后者只有在您不使用变量隐藏内置list函数时才有效(无论如何这都是个坏主意,所以我使用了名称lists代替)

>>> lists = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
>>> map(max, lists)
[345, 555, 777, 666]

答案 1 :(得分:0)

newArray = [max(i) for i in list]

搜索List Comprehension,这是关于python的最有用的东西之一。

答案 2 :(得分:0)

尝试列表理解:

L = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
maxes = [max(sublist) for sublist in L]
print(maxes)
# [345, 555, 777, 666]

答案 3 :(得分:0)

哇,今天人们很苛刻。我想我理解你的问题;

new_list = [max(i) for i in list]
for k in new_list:
     print (k)

答案 4 :(得分:0)

Python 2中的工作示例 - 使用Python 2.6.9 进行测试2.7.10

L01 = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
L02 = map(max, L01)
print(L02)

<强>输出

[345, 555, 777, 666]


Python 3中的工作示例 - 使用Python 3.2.5 进行测试3.4.3 3.5.0

唯一的区别是map()list()包裹。

L01 = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
L02 = list(map(max, L01))
print(L02)

<强>输出

[345, 555, 777, 666]