我想把最大数字放到一个新的数组中,我已经尝试了所有我能想到的东西,但似乎都没有工作....(添加到空结果数组,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
答案 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]