给定一个列表[“foo”、“bar”、“baz”]和列表“bar”中的一个项,如何获取其索引1?


当前回答

me = ["foo", "bar", "baz"]
me.index("bar") 

您可以将此应用于列表中的任何成员以获取其索引

其他回答

简单选项:

a = ["foo", "bar", "baz"]
[i for i in range(len(a)) if a[i].find("bar") != -1]

FMc和user7177的答案的变体将给出一个可以返回任何条目的所有索引的dict:

>>> a = ['foo','bar','baz','bar','any', 'foo', 'much']
>>> l = dict(zip(set(a), map(lambda y: [i for i,z in enumerate(a) if z is y ], set(a))))
>>> l['foo']
[0, 5]
>>> l ['much']
[6]
>>> l
{'baz': [2], 'foo': [0, 5], 'bar': [1, 3], 'any': [4], 'much': [6]}
>>> 

您还可以将其用作一行程序来获取单个条目的所有索引。虽然我确实使用了set(a)来减少lambda的调用次数,但并不能保证效率。

在查找列表中项目的索引时,列表理解将是获得紧凑实现的最佳选择。

a_list = ["a", "b", "a"]
print([index for (index , item) in enumerate(a_list) if item == "a"])

可以使用zip()函数获取列表中值的索引。代码可以是:;

list1 = ["foo","bar","baz"]
for index,value in zip(range(0,len(list1)),list1):
    if value == "bar":
        print(index)

要获取所有索引,请执行以下操作:

indexes = [i for i, x in enumerate(xs) if x == 'foo']