我有两个列表,例如:
l_one = [2,5,7,9,3]
l_two = [4,6,9,11,4]
...我需要找到两个列表中的最小值和最大值。也就是说,我想生成一个最小值和一个最大值。
我的问题是 - 实现这一目标的最佳方式是什么?
任何帮助都非常感激。
答案 0 :(得分:31)
可以说最可读的方式是
max(l_one + l_two)
或
min(l_one + l_two)
它会复制列表,因为l_one + l_two
会创建一个新列表。为避免复制,您可以
max(max(l_one), max(l_two))
min(min(l_one), min(l_two))
答案 1 :(得分:12)
避免复制列表的另一种方法
>>> l_one = [2,5,7,9,3]
>>> l_two = [4,6,9,11,4]
>>>
>>> from itertools import chain
>>> max(chain(l_one, l_two))
11
>>> min(chain(l_one, l_two))
2
答案 2 :(得分:2)
您可以将它们组合,然后调用min或max:
>>> l_one = [2,5,7,9,3]
>>> l_two = [4,6,9,11,4]
>>> min(l_one + l_two)
2
>>> max(l_one + l_two)
11
答案 3 :(得分:2)
如果你有像你这样的列表,这就有效,即使是不同大小的列表:
min(min([i1,i2,i3]))
您甚至可以使用更智能的解决方案,该解决方案适用于不同的numpy数组:
import numpy as np
i1=np.array(range(5))
i2=np.array(range(4))
i3=np.array(range(-5,5))
np.min(np.concatenate([i1,i2,i3]))
答案 4 :(得分:0)
如果要从两个列表中选择最大值或最小值。我认为以下内容将起作用:
from numpy import maximum
result = maximum(l_one,l_two)
在比较这两个列表中的每个元素后,它将返回一个最大值。