Python 列表 - Return 索引

Python List - Return Index

对于下面的列表 - “A” - 我想要 return “A”中元素的索引......除非“A”中的元素等于 'SCR'.鉴于此列表/代码:

输入:

A=['126.00', '9.00', '1.50', '9.50', '9.50', 'SCR', '19.00', '12.00']
B=[(A.index(i)+1) for i in A if not i=='SCR']
print(B)

输出:

[1, 2, 3, 4, 4, 7, 8]

注意 4 次重复。

要求的输出是:

[1,2,3,4,5,7,8]

您可以在遍历列表时使用 enumerate() 获取索引:

A=['126.00', '9.00', '1.50', '9.50', '9.50', 'SCR', '19.00', '12.00']
B=[i for i, v in enumerate(A, 1) if v!='SCR']
# [1, 2, 3, 4, 5, 7, 8]

是的,它会重复,因为 python 从前面开始一个接一个地检查,一旦找到它就会停止。

要解决此问题,只需在找到该索引处的元素后将其删除。

你也可以只做一件事--

A=['126.00', '9.00', '1.50', '9.50', '9.50', 'SCR', '19.00', '12.00'] B=[(i+1) for i in A if not i=='SCR'] 打印(B)

尝试:

b=[]
for i in range(len(A)):
    if A[i] != "SCR":
        b.append(i+1)

print (b)

说明:

  • 如果我们只需要打印索引号,我们可以通过“for i in range(len(A))”来获取。在这里,它的值将是:0,1,2,3,4,5,6,7
  • 使用 if A[i] != "SCR",我们正在检查该索引的值是否等于 SCR,如果不等于,则将该索引值添加到另一个数组 - B

当您使用 list.index() 时,它 returns 第一个匹配项 。因此,当 i='9.50' 时,您将获得它第一次出现的索引。

为避免这种情况,您可以这样做:

A=['126.00', '9.00', '1.50', '9.50', '9.50', 'SCR', '19.00', '12.00']
B=[i+1 for i in range(len(A)) if not A[i]=='SCR']
print(B)

>>[1, 2, 3, 4, 5, 7, 8]