Более простой / предпочтительный способ перебора двух списков одинаковой длины и добавления максимума каждой пары в новый список? - PullRequest
1 голос
/ 23 марта 2012

Учитывая два списка одинаковой длины, существует ли более простой или предпочтительный способ перебора двух списков одинаковой длины и добавления максимума каждой пары элементов в новый список?Это два метода, которые я знаю.

import itertools

a = [1,2,3,4,5]
b = [1,1,6,3,8]
m1 = list()
m2 = list()

for x, y in zip(a, b):
    m1.append(max(x, y))

for x in itertools.imap(max, a, b):
    m2.append(x)

Оба эти результата в [1, 2, 6, 4, 8], что является правильным.Есть ли лучший способ?

Ответы [ 3 ]

7 голосов
/ 23 марта 2012
map(max, a, b)
[max(x, y) for x, y in zip(a, b)]
3 голосов
/ 23 марта 2012

Вы можете сделать это как:

a = [1,2,3,4,5]
b = [1,1,6,3,8]
m3 = [max(x,y) for (x,y) in zip(a,b)]

или даже

m4 = map(max, zip(a,b))
0 голосов
/ 24 марта 2012

В Python3 map() больше не возвращает список, поэтому вы должны использовать понимание списка или

list(map(max, a, b))

, если вам действительно нужен список, а не просто итератор

...