查找列表中元素的索引[重复]

Posted

技术标签:

【中文标题】查找列表中元素的索引[重复]【英文标题】:Find the index of an element in a list [duplicate] 【发布时间】:2019-12-31 03:50:46 【问题描述】:

我在查找列表中每个相似值的索引时遇到问题。

例子:

b = ["a", "b", "a", "a", "b", "b"]
for x in b:
    if "a" in x:
        print(b.index(x))

我目前的结果:

0
0
0

预期结果:

0
2
3

(在我的实际情况中,我们在一个列表中有 2 到 100 个相似的值,因此 .index 无法正常工作。)

【问题讨论】:

不确定您要做什么。您是否只对查找"a" 的索引感兴趣? 是的,我想学习新的方法,以防万一以后遇到这样的问题。 您可能需要查找内置的enumerate 函数。 【参考方案1】:

正确代码:

characters = ["a", "b", "a", "a", "b", "b"]
for i in range(len(characters)):
    if characters[i] == "a":
        print(i)

【讨论】:

【参考方案2】:

这是算法问题。 list.index(val) 方法返回要出现的第一个 值的索引。如果你想找到所有相似值的索引,那么你需要改变你的算法。

一个常见的蛮力方法是这样的:

b = ["a", "b", "a", "a", "b", "b"]
for i in range(len(b)):
    if b[i] == 'a':
        print(i)

正如你所说,这可能会输出:

0
2
3

【讨论】:

谢谢,这就是我想要的。 我会在 6 分钟冷却后标记为答案 如前所述,上述方法是蛮力。有比效率/时间/内存更好的代码。【参考方案3】:

相当简单:

def indices(arr, val):
    return [n for n, x in enumerate(arr) if x == val]

b = ["a", "b", "a", "a", "b", "b"]

print(indices(b, "a"))

【讨论】:

【参考方案4】:

使用enumerate:

[n for n, i in enumerate(b) if i == 'a']

输出:

[0, 2, 3]

【讨论】:

以上是关于查找列表中元素的索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章

编写在数字数组中查找元素索引的函数[重复]

查找重复元素的索引[重复]

如何在python列表中查找某个元素的索引

如何在python列表中查找某个元素的索引

python怎么获取list的某个元素的位置

查找 NSArray 中所有重复元素的索引