重复元素的IF语句

2024-09-27 22:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个有趣的问题: 假设我们有lst = [1,2,3,4,5,5,5,5,5,6,7,8] 我有兴趣说,如果声明只返回 第三个5的结果。
例如:

for i in range(0,lent(lst)):
   if lst[i]==5:
      print(i,"is index of 1st 5")
      break

但是怎么说没有额外的参数或列表就要显示第三个5的索引呢?你知道吗


Tags: ofin声明列表for参数indexif
3条回答

您可以在列表上使用enumerate并获取所需元素的所有索引,然后获取所需的任何索引

lst = [1,2,3,4,5,5,5,5,5,6,7,8]
occurances = [idx for idx, val in lst if val == 5]
occurances[0] # first occurance
occurances[1] # second occurance
occurances[2] # third occurance 

你知道吗胡安帕.阿里维拉加已经指出了通常的解决方案。
但是,例如numpy,您也可以用另一种方法:

import numpy as np
lst = np.array([1,2,3,4,5,5,5,5,5,6,7,8])

cnt5 = (lst==5).cumsum()
np.arange(len(lst))[cnt5==3][0]

# 6

cnt5是布尔数组的累积和,仅在lst有5的索引处为真,即:它是lst的5个计数器的数组。
那么您只需要这个数组所在的索引3。你知道吗

这应该适合你的需要

counter = 0
for item in lst:
    if item == 5:
        counter += 1
    if counter >= 3:
        break

相关问题 更多 >

    热门问题