查找连续重复编号索引的最有效方法是什么?索引应该是连续重复序列中第一个数字的索引。
我的第一个想法是itertools库,但是如何找到数字的索引? 我尝试枚举并为该问题找到了一种解决方案:
<script>
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload();
}
};
</script>
例如,如果输入是列表[1,2,3,3,3,9,9,9],则现在3和9都连续重复三次,则输出应该是较大的索引一(9),即5。如果输入是列表[1,9,9,3,2,9,9,9],则输出应为索引5。
答案 0 :(得分:1)
不确定这是否有效。使用itertools.groupby
例如:
from itertools import groupby
l1 = [1,9,9,3,2,9,9,9, 1,2]
#Group by elements --> https://stackoverflow.com/questions/6352425/whats-the-most-pythonic-way-to-identify-consecutive-duplicates-in-a-list
grouped_L = [(k, list(g)) for k,g in groupby(enumerate(l1), lambda x: x[1])]
print( max(grouped_L, key=lambda x: (x[0], len(x[1]))) )
print( max(grouped_L, key=lambda x: (x[0], len(x[1])))[1][0][0] ) #Get Index
输出:
(9, [(5, 9), (6, 9), (7, 9)])
5
答案 1 :(得分:0)
在列表上使用.index()
方法并将所需的值作为参数传递,它将返回第一次出现的索引:
data = [1,3,5,6,5,9,3,8,5]
ind = data.index(5)
print(ind)
上面的代码将返回2。