我试图根据标准合并两个列表。 我有以下代码。
R1=[10,20,30,40,50]
R2=[5,10,45,40,45]
for n,m in zip(R1,R2):
if n>m:
print(n)
else:
print(m)
当我运行上面的代码时,结果是:
10
20
45
40
50
我不知道如何将结果作为这样的新列表:
results=[10,20,45,40,50]
我该怎么做? 提前谢谢。
答案 0 :(得分:5)
您可以使用max
和列表理解。
result = [max(pair) for pair in zip(R1, R2)]
print result
答案 1 :(得分:3)
创建新的list
和append()
结果:
In []:
R1=[10,20,30,40,50]
R2=[5,10,45,40,45]
results = []
for n, m in zip(R1,R2):
if n>m:
results.append(n)
else:
results.append(m)
results
Out[]:
[10, 20, 45, 40, 50]
你可以看一下list
理解来做同样的事情:
In []:
results = [n if n>m else m for n, m in zip(R1, R2)]
results
Out[]:
[10, 20, 45, 40, 50]
甚至更简单:
In []:
results = [max(x) for x in zip(R1, R2)]
results
Out[]:
[10, 20, 45, 40, 50]
答案 2 :(得分:1)
>>> R1 = [10, 20, 30, 40, 50]
>>> R2 = [5, 10, 45, 40, 45]
>>> list(map(max, R1, R2))
[10, 20, 45, 40, 50]
另一种方法是在conditional expression中使用list comprehension:
>>> [n if n>m else m for n, m in zip(R1, R2)]
[10, 20, 45, 40, 50]
答案 3 :(得分:0)
R1=[10,20,30,40,50]
R2=[5,10,45,40,45]
temp_list = []
for n,m in zip(R1,R2):
if n>m:
temp_list.append(n)
else:
temp_list.append(m)
print(temp_list)
这应该有效。 您正在尝试打印每个值,因此它将在不同的行上打印。
答案 4 :(得分:0)
将map
与多个iterables一起使用:
>>> R1=[10,20,30,40,50]
>>> R2=[5,10,45,40,45]
>>> it = map(max, R1, R2)
>>> print(list(it))
[10, 20, 45, 40, 50]
(通常,要查看的位置在itertools
模块中,但在这种情况下,该函数实际上是内置的。)