如何从列表中获取某个值的 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
要获取列表中的所有索引,您可以使用几种不同的方法。 您可以使用列表理解:
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]