use*_*536 8 python sorting indexing list max
所以说我有一个列表:
my_list = [12, 13, 51, 21, 22, 58, 45.1, 34.2, 56, 6, 58, 58]
Run Code Online (Sandbox Code Playgroud)
所以这个中的最大数字显然是58,但我不只想返回一个 58,我想要一个包含最大数量的所有索引的列表.
基本上我想要结果 [5, 10, 11]
我知道,如果我想要最大数量,我可以做,my_list.index(max(my_list))但这只会给我第一个索引.
有小费吗?另外,我想坚持简单的方法,如sort,max,len,等...
jon*_*rpe 17
您可以确定maxval有max:
maxval = max(my_list)
Run Code Online (Sandbox Code Playgroud)
indices = [index for index, val in enumerate(my_list) if val == maxval]
Run Code Online (Sandbox Code Playgroud)
以你为榜样,我明白了
maxval == 58
indices = [5, 10, 11]
Run Code Online (Sandbox Code Playgroud)
根据Keyser的建议,你可以通过以下方式保存迭代列表两次(一次确定maxval,一次查找匹配的indexes):
maxval = None
for index, val in enumerate(my_list):
if maxval is None or val > maxval:
indices = [index]
maxval = val
elif val == maxval:
indices.append(index)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |