首页 > 解决方案 > 获取列出项目开始变化的索引

问题描述

我有一个列表,其中包含多个字符串,这些字符串在连续多次重复字符串后会发生变化。让我用一个例子来解释:如果我有这个字符串

lst = ['A', 'A', 'A', 'A', 'F', 'F', 'F', 'F', 'D', 'G', 'G', 'G', 'W']

我想获取该索引中的元素已开始更改的项目列表(包括第一个项目列表),因此输出应如下所示:

out = [0, 4, 8, 9, 10]

我怎样才能以最好的方式做到这一点?

标签: pythonlist

解决方案


这是一个for可以为您完成工作的循环。它遍历列表并检查它包含的每个值是否与它识别的前一个值不同。如果是这样,它将索引添加到列表并更新其curr_val.

lst = ['A', 'A', 'A', 'A', 'F', 'F', 'F', 'F', 'D', 'G', 'G', 'G', 'W']

def find_change(lst):
    curr_val = ''
    indices = []
    for i,v in enumerate(lst):
        if curr_val != v:
            indices.append(i)
            curr_val = v
    return indices

i = find_change(lst)
print(i)

推荐阅读