2024-09-27 22:00:48 发布
网友
我有个有趣的问题: 假设我们有lst = [1,2,3,4,5,5,5,5,5,6,7,8] 我有兴趣说,如果声明只返回 第三个5的结果。 例如:
lst = [1,2,3,4,5,5,5,5,5,6,7,8]
for i in range(0,lent(lst)): if lst[i]==5: print(i,"is index of 1st 5") break
但是怎么说没有额外的参数或列表就要显示第三个5的索引呢?你知道吗
您可以在列表上使用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。你知道吗
5
3
这应该适合你的需要
counter = 0 for item in lst: if item == 5: counter += 1 if counter >= 3: break
您可以在列表上使用enumerate并获取所需元素的所有索引,然后获取所需的任何索引
你知道吗胡安帕.阿里维拉加已经指出了通常的解决方案。
但是,例如numpy,您也可以用另一种方法:
cnt5是布尔数组的累积和,仅在lst有
5
的索引处为真,即:它是lst的5个计数器的数组。那么您只需要这个数组所在的索引
3
。你知道吗这应该适合你的需要
相关问题 更多 >
编程相关推荐