Python find min&;最多两个列表

Python find min&;最多两个列表,python,list,Python,List,我有两份清单,例如: l_one = [2,5,7,9,3] l_two = [4,6,9,11,4] …我需要从两个列表的组合中找到最小值和最大值。也就是说,我想生成一个最小值和一个最大值 我的问题是——实现这一目标的最具Python风格的方式是什么 非常感谢您的帮助。可以说,最具可读性的方法是 max(l_one + l_two) 或 不过,它会复制列表,因为l_one+l_two会创建一个新列表。为了避免复制,您可以这样做 max(max(l_one), max(l_two)) min

我有两份清单,例如:

l_one = [2,5,7,9,3]
l_two = [4,6,9,11,4]
…我需要从两个列表的组合中找到最小值和最大值。也就是说,我想生成一个最小值和一个最大值

我的问题是——实现这一目标的最具Python风格的方式是什么


非常感谢您的帮助。

可以说,最具可读性的方法是

max(l_one + l_two)

不过,它会复制列表,因为
l_one+l_two
会创建一个新列表。为了避免复制,您可以这样做

max(max(l_one), max(l_two))
min(min(l_one), min(l_two))

您可以组合它们,然后调用最小值或最大值:

>>> 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

另一种避免复制列表的方法

>>> 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

如果您只是像您一样拥有列表,即使使用不同大小的列表,也可以这样做:

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]))

如果要从这两个列表中选择最大值或最小值,我认为以下方法可行:

from numpy import maximum
result = maximum(l_one,l_two)

比较这两个列表中的每个元素后,它将返回一个最大值。

是否应将其标记为作业?因此第一个将复制列表并找出最大值(内存更昂贵)。但是第二种方法呢?速度方面需要更长的时间吗?乔治:不,速度也更快。唯一的缺点是它读起来不像第一本那么好。你能解释一下或者提供一些资源给我,让我了解它背后的原因吗?我应该把这当作一个新问题问吗?或者它非常简单/取决于实现。@George:什么原因?@George:第一个表单创建了一个新列表,其中将包含
l\u one
l\u two
中所有引用的副本。此步骤所需的时间与列表的长度成比例。第二种形式不需要复制,因此速度更快。(不过,它必须调用
max()
三次,因此对于非常短的列表,它甚至可能会稍微慢一点,但对于非常短的列表,速度并不重要。)
from numpy import maximum
result = maximum(l_one,l_two)