Python:迭代列表并存储每个索引具有最大值的最佳方法

问题描述 投票:0回答:1

在 Python (3.8) 中,我有 15 个相同长度的浮点数列表。

对于列表的每个索引,我想找到列表中的最大值,找到相应的列表,并将信息添加到新列表中。因此,我的新列表将为我提供每个索引的具有最大值的列表的信息(我不关心实际的最大值,只需要知道每个索引处包含该最大值的列表)。

现在我有以下代码来执行此操作(maxList 是我包含此信息的列表)。它有效,但看起来非常乏味,我想有一种更好、更紧凑/高效的方法来做到这一点。

myMax=0
maxList=0
for i in range(len(List1)):
    myMax=max(List1[i])
    maxList=1
    if(max(List2[i]) > max(List1[i])):
        myMax=max(List2[i])
        maxList=2
    if(max(List3[i]) > max(List2[i])):
        myMax=max(List3[i])
        maxList=3
        ....

我的问题是有没有更好的方法来实现相同的结果而不重复 15 次相同的 if 循环?

python python-3.x list loops iteration
1个回答
0
投票

拥有变量

List1
List2
List3
(大概是等等)绝对是一个复杂的问题。您应该有一个数组并对其索引进行循环。那么剩下的应该是相当微不足道的。

floats = [
  [1.0] * 7,
  [2.0] * 7,
  [3.0] * 7,
  [4.0] * 7,
  [42.17] * 7,
  [6.0] * 7,
  [0.1, 12.2, 27.3, 18.4, 496.5, 7.6, 1.7]]

maxfloats = [max(floats[x][i] for x in range(len(floats))) for i in range(len(floats[0]))]
print(maxfloats)
© www.soinside.com 2019 - 2024. All rights reserved.