选择价值最大的清单

时间:2019-03-27 23:21:20

标签: python python-3.x list

我有两个数字列表,并且我想要一个函数返回最大数字的列表,即具有两个列表[1,2,3,9][4,5,6,7,8],该函数应该返回[1,2,3,9]

我知道这可行:

a = [1,2,3,9]
b = [4,5,6,7,8]
ans = [_ for _ in [a,b] if max(_) == max((max(a),max(b)))][0]

我知道有:

a = [1,2,3,9]
b = [4,5,6,7,8]
if max(a)>max(b):
    ans = a
else:
    ans = b

但是,有没有一种更有效的一线或两线解决方案?

4 个答案:

答案 0 :(得分:9)

在没有任何for循环的情况下如何使用以下内容。只需比较列表的max

a = [1,2,3,9]
b = [4,5,6,7,8]
ans = (a if max(a) > max(b) else b)
# [1, 2, 3, 9]

答案 1 :(得分:3)

max函数允许您指定一个键。您可以将两个列表作为max()的列表列表提供,并使用max作为键函数。这将以非常紧凑的语句为您提供结果:

a = [1,2,3,9]
b = [4,5,6,7,8]
result = max([a,b],key=max)

答案 2 :(得分:0)

这可以工作

max([a,b], key=max)

这里的窍门是要知道,max函数可以使用key函数应用于没有自然数值解释的对象。

答案 3 :(得分:0)

我会推荐numpy或pandas,但老实说,您的解决方案看起来不错。

这是一个小例子(在手机上键入,因此未经测试)

npa = np.array(a) 
npb = np.array(b)

max_array = None
total_max = 0  # or -np.inf if you want to deal with negative numbers too
for k in [npa, npb]:
    if k.max() > total_max:
         max_array = k