如何获取列表中的多个索引

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

如何从列表中获取某个值的 2 个或多个索引?例如

list = [5, 1, 5]
list_max = max(list)
list_max_indices = list.index(list_max)

通过这种方式,list_max_indices 只返回一个值,即它遇到的第一个值,即使有两个值“5”。如果我还要返回第二个索引,我该怎么办?

附注 我需要这个,因为我想使用索引将分数分配给卡片程序中的获胜玩家,以便更好地理解:

score = [0, 0, 0]
players = [user, first_opponent, second_opponent]

#hypothetic 2+ winning players
score[list_max_indices] += 1
#final score = [1, 0, 1]

或者类似的东西

for winning_player in list_max_indices:
    score[winning_player] += 1
    winning_player += 1
python list indexing
1个回答
0
投票

要获取列表中的所有索引,您可以使用几种不同的方法。 您可以使用列表理解:

r = [index for index, obj in enumerate(l) if obj == o]

其中

l
是列表,
o
是您要查找索引的对象。这相当于:

r = []
for index, obj in enumerate(l):
    if obj == o:
        r.append(obj)

如果内存是一个限制,您还可以使用生成器理解:

r = (index for index, obj in enumerate(l) if obj == o)

如果碰巧需要一个函数来实现这一点,这是一个单行:

def get_list_indices(l, o): [index for index, obj in enumerate(l) if obj == o]
© www.soinside.com 2019 - 2024. All rights reserved.