我有两个数字列表,并且我想要一个函数返回最大数字的列表,即具有两个列表[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
但是,有没有一种更有效的一线或两线解决方案?
答案 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