python - 获取列出项目开始变化的索引
问题描述
我有一个列表,其中包含多个字符串,这些字符串在连续多次重复字符串后会发生变化。让我用一个例子来解释:如果我有这个字符串
lst = ['A', 'A', 'A', 'A', 'F', 'F', 'F', 'F', 'D', 'G', 'G', 'G', 'W']
我想获取该索引中的元素已开始更改的项目列表(包括第一个项目列表),因此输出应如下所示:
out = [0, 4, 8, 9, 10]
我怎样才能以最好的方式做到这一点?
解决方案
这是一个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)
推荐阅读
- python - 使用 .loc 时数据框排序不适用
- javascript - 如何将有关从通道获取的消息的信息放入 JSON 文件?
- r - 计算两个列表之间的皮尔逊系数
- python - 如何实现通过嵌套字典找到关键路径的函数max_leaf_path(d)?
- c# - ASP.NET REST API 没有实体框架但有 DAO 的
- javascript - 无法从手机加载 Ionic 项目
- spring-mvc - 在名称为“newApp”的 DispatcherServlet 中找不到具有 URI [/demoApp/add] 的 HTTP 请求的映射
- events - SDL2 只返回第一个注册的 UserEvent
- java - Android Searchview过滤器recyclerview volley实现
- azure-devops - 使用 Azure DevOps 向跨域用户发送拉取请求的邮件通知