查找列表中元素的索引[重复]
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]
【讨论】:
以上是关于查找列表中元素的索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章