添加两个列表并返回具有最高值的新列表

时间:2017-04-22 23:14:06

标签: python

所以,让我们说我有两个名单,如下所示:

x1 = [1,2,3,4,5,6,7,8,9]
x2 = [9,8,7,6,5,4,3,2,1]

我现在希望将它们一起添加到一个新列表中,但有一点是新列表包含每个列表中最高(或最低)的值。

因此,如果我需要最高值,则生成的新列表将变为:

final_list_highest = [9,8,7,6,5,6,7,8,9]

最低值:

final_list_lowest = [1,2,3,4,5,4,3,2,1]

希望你能看到我要去的地方:)

有没有一些巧妙的方法可以做到这一点,我还没有想到,或者你会怎么做呢?

3 个答案:

答案 0 :(得分:3)

在一行

min_list, max_list = zip(*[(min(a,b),max(a,b)) for a,b in zip(x1,x2)])

这假设列表大小相同。您可以使用sorted()而不是max / min,也许它会稍微快些但我发现它更具可读性。

答案 1 :(得分:1)

final_list_highest = [max(a, b) for a, b in zip(x1, x2)]

应该给出一个具有最高值的列表。

使用min获取最低值。

答案 2 :(得分:0)

由于问题源自this question,因此可以假设可以使用 numpy 。因此,解决方案是将numpy.minnumpy.max与指定的轴一起使用。

import numpy as np

x1 = [1,2,3,4,5,6,7,8,9]
x2 = [9,8,7,6,5,4,3,2,1]

print (np.c_[x1,x2].min(axis=1)) # prints [1 2 3 4 5 4 3 2 1]
print (np.c_[x1,x2].max(axis=1)) # prints [9 8 7 6 5 6 7 8 9]