所以,让我们说我有两个名单,如下所示:
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]
希望你能看到我要去的地方:)
有没有一些巧妙的方法可以做到这一点,我还没有想到,或者你会怎么做呢?
答案 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.min
和numpy.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]