python - 计算列表中字符串的连续重复
问题描述
我有一个 Python 字符串列表,这样,
输入:
li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']
我该怎么做才能生成另一个列表来计算列表中任何字符串的连续重复次数?对于上面的列表,返回列表类似于:
预期输出:
li_count = [['aaa',1],['bbb',1]['abb',2],['bbb',3],['aaa',2]]
解决方案
from itertools import groupby
li = ['aaa','bbb','aaa','abb','abb','bbb','bbb','bbb','aaa','aaa']
a = [[i, sum(1 for i in group)] for i, group in groupby(li)]
print(a)
[['aaa', 1], ['bbb', 1], ['aaa', 1], ['abb', 2], ['bbb', 3], ['aaa', 2]]
感谢@user3483203 的改进:
a = [[i, len([*group])] for i, group in groupby(li)]
推荐阅读
- php - Foreach 正在跳过一些字段
- c# - 当涉及到抽象类时,在 C# 中正确分配适当的修饰符
- regex - 用于匹配子字符串但不包含单词的正则表达式(单词边界问题)
- tabs - ActiveAdmin 设置选项卡处于活动状态
- javascript - 我正在尝试匹配数字值的字段输入,第一个字符必须是数字(1-9),其余任何数字
- python - 如何使 SQLAlchemy 查询返回模型类的实例?
- c++ - 动态分配 8 字节内存
- javascript - 为什么 HTML5 中没有脚标签?
- android - 在 Android 上设置 Charles 代理时 Internet 连接丢失
- cakephp-2.0 - Cakephp 2 哈希函数生成新数组