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)