将两个列表的元素与python中的if语句组合在一起

时间:2017-08-26 04:10:45

标签: python list

我试图根据标准合并两个列表。 我有以下代码。

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]

我该怎么做? 提前谢谢。

5 个答案:

答案 0 :(得分:5)

您可以使用max和列表理解。

result = [max(pair) for pair in zip(R1, R2)]
print result

答案 1 :(得分:3)

创建新的listappend()结果:

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)

功能解决方案

map()max()函数简化了此问题:

>>> 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模块中,但在这种情况下,该函数实际上是内置的。)