如何找到列表中连续重复的数字的第一个索引?

时间:2019-05-02 04:27:03

标签: python python-3.x list counting

查找连续重复编号索引的最有效方法是什么?索引应该是连续重复序列中第一个数字的索引。

我的第一个想法是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。

2 个答案:

答案 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。