如何使用 python 更紧凑地选择最高数字?
How can I make selecting highest number more compact with python?
我有这段代码,其中有一个大小为 (i,j) 的数组,对于每个 j 变量,我想要 select I 个变量中的最大值。
例如,我有数组[[2,5,1][12,4,6],[1,7,8],[2,4,5]],我想得到最高的每个内部数组的编号,因此它应该 return: [5,12,8,5]
我有以下代码可以正常工作,但是,它有点混乱且难以阅读,所以我的问题是我可以将它变得更紧凑吗?
这是我的代码:
high_net_profit = list()
for i in range(len(self.accum_profit[0])):
high_value = 0
for j in range((len(self.accum_profit))):
if j == 0:
high_value = self.accum_profit[j][i]
else:
if self.accum_profit[j][i] > high_value: high_value = self.accum_profit[j][i]
high_net_profit.append(high_value)
尝试:
lst = [[2, 5, 1], [12, 4, 6], [1, 7, 8], [2, 4, 5]]
out = [max(l) for l in lst]
print(out)
打印:
[5, 12, 8, 5]
或者:
out = [*map(max, lst)]
print(out)
这是一个使用 numpy 的简单解决方案。 Numpy 是处理数字时非常有用的库:
import numpy as np
l_in = [[2, 5, 1], [12, 4, 6], [1, 7, 8], [2, 4, 5]]
# out = [max(l) for l in l_in] # can also be used
out = list(np.max(l_in, axis=1))
print(out)
输出:
[5, 12, 8, 5]
s = [[2,5,1][12,4,6],[1,7,8],[2,4,5]]
如果你只需要可迭代对象:
x = map(max, s)
如果你需要一个列表,那么包装成list
:
x = list(map(max, s))
我有这段代码,其中有一个大小为 (i,j) 的数组,对于每个 j 变量,我想要 select I 个变量中的最大值。
例如,我有数组[[2,5,1][12,4,6],[1,7,8],[2,4,5]],我想得到最高的每个内部数组的编号,因此它应该 return: [5,12,8,5]
我有以下代码可以正常工作,但是,它有点混乱且难以阅读,所以我的问题是我可以将它变得更紧凑吗?
这是我的代码:
high_net_profit = list()
for i in range(len(self.accum_profit[0])):
high_value = 0
for j in range((len(self.accum_profit))):
if j == 0:
high_value = self.accum_profit[j][i]
else:
if self.accum_profit[j][i] > high_value: high_value = self.accum_profit[j][i]
high_net_profit.append(high_value)
尝试:
lst = [[2, 5, 1], [12, 4, 6], [1, 7, 8], [2, 4, 5]]
out = [max(l) for l in lst]
print(out)
打印:
[5, 12, 8, 5]
或者:
out = [*map(max, lst)]
print(out)
这是一个使用 numpy 的简单解决方案。 Numpy 是处理数字时非常有用的库:
import numpy as np
l_in = [[2, 5, 1], [12, 4, 6], [1, 7, 8], [2, 4, 5]]
# out = [max(l) for l in l_in] # can also be used
out = list(np.max(l_in, axis=1))
print(out)
输出:
[5, 12, 8, 5]
s = [[2,5,1][12,4,6],[1,7,8],[2,4,5]]
如果你只需要可迭代对象:
x = map(max, s)
如果你需要一个列表,那么包装成list
:
x = list(map(max, s))