的最小和最大我有两个列表,如:Python中找到两个列表
l_one = [2,5,7,9,3]
l_two = [4,6,9,11,4]
...我需要找到两个清单合并最小和最大值。也就是说,我想生成一个最小值和一个最大值。
我的问题是 - 什么是达到这个最pythonic方式?
任何帮助非常感谢。
的最小和最大我有两个列表,如:Python中找到两个列表
l_one = [2,5,7,9,3]
l_two = [4,6,9,11,4]
...我需要找到两个清单合并最小和最大值。也就是说,我想生成一个最小值和一个最大值。
我的问题是 - 什么是达到这个最pythonic方式?
任何帮助非常感谢。
可以说是最可读的方式是
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))
您可以将它们组合起来,然后调用最小或最大:
>>> 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]))
如果你想选择两个lists.I的最大值或最小值觉得下面的工作:
from numpy import maximum
result = maximum(l_one,l_two)
比较这两个列表中的每个元素后,它将返回一个最大值。
这应该被标记为家庭作业吗? – 2012-04-04 14:08:35