如何解决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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。