列表中相同值的索引

3

由于list.index(x)只会返回列表中第一个值为x的项目的索引。有没有办法返回列表中所有相同值的索引。

例如,我有一个包含一些相同值的列表:

mylist = [(A,8), (A,3), (A,3), (A,3)]

I want to return:

index_of_A_3 = [1, 2, 3]
4个回答

9
mylist = [(A,8), (A,3), (A,3), (A,3)]
def indices( mylist, value):
    return [i for i,x in enumerate(mylist) if x==value]

print indices(mylist, (A,3))
# [1, 2, 3]

非常感谢。您能详细解释一下enumerate()吗? - Protocole
1
"enumerate" 接受一个可迭代对象作为参数,并返回一个新的迭代器,其值是原始可迭代对象中索引和元素组成的元组。 举个例子:list(enumerate(["foo", "bar", "baz"])) == [(0,"foo"), (1, "bar"), (2, "baz")] - Katriel
感谢你们两位,Brent Newey和katrielatex。 - Protocole

2

将 (A,3) 替换为您想要的内容,或使用 lambda 表达式。

[i for i in range(len(mylist)) if mylist[i]==(A,3)]

1

这有点丑,但是:

index_of_A_3 = [i for i in range(len(mylist)) if mylist[i] == (A,3)]

谢谢,你的回答和Kabie的完全一样。 - Protocole

0

更快!!!

index_of_A_3= np.where(mylist == (A,3))[0]

1
如果您解释一下提供的代码如何回答问题,那么这将是一个更好的答案。 - pppery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接