Python清单-返回索引

问题描述

对于下面的列表-“ A”-我想返回“ A”中元素的索引.....除非“ A”中的元素等于“ SCR”。给出以下列表/代码

输入:

A=['126.00','9.00','1.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,7,8]

请注意,重复4次。

所需的输出是:

[1,5,8]

解决方法

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

A=['126.00','9.00','1.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]
,

尝试:

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,6,7
  • 如果A [i]!=“ SCR”,我们将检查该索引的值是否等于SCR,如果不等于,则将该索引值添加到另一个数组-B
,

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

为避免这种情况,您可以执行以下操作:

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

>>[1,8]
,

是的,它会重复,因为python从头开始逐一检查,并在找到后立即停止。

要解决此问题,只需在找到索引时删除该元素即可。

您也可以做一件事-

A = ['126.00','9.00','1.50','9.50','9.50','SCR','19 .00','12 .00'] B = [(i + 1)对于A中的i,如果不是i =='SCR'] 打印(B)