pandas - python列表重复项筛选分组
高洛峰
高洛峰 2017-04-18 09:36:27
[Python讨论组]

有类似列表如下:

list =  ['aaa', 
'aaa', 
'aaa', 
'aaa', 
'ccc', 
'ccc', 
'aaa', 
'aaa', 
'aaa',
'aaa', 
'ccc', 
'ccc', 
'ccc', 
'aaa', 
'aaa', 
'ccc', 
'ccc', 
'ccc', 
'ccc', 
'ccc']

希望能得到如下列表

[
[aaa,aaa,aaa],
[aaa,aaa,aaa,aaa],
[aaa,aaa],
[...],
...
]

试了好久总是不行,太笨吧,求解答。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
黄舟

放码:

def modify(lst):
    lst_len = len(lst)
    new_lst = []
    
    def group_lst(lst, i=0):
        if i == lst_len:
            return
        j = i
        _lst = []
        while lst[j] == lst[i]:
            _lst.append(lst[j])
            i += 1
            if i == lst_len: 
                new_lst.append(_lst)
                break
        else:
            new_lst.append(_lst)
        return group_lst(lst, i)
    group_lst(lst)
    return sorted(new_lst)

modify(lst)

结果:

[['aaa', 'aaa'],
 ['aaa', 'aaa', 'aaa', 'aaa'],
 ['aaa', 'aaa', 'aaa', 'aaa'],
 ['ccc', 'ccc'],
 ['ccc', 'ccc', 'ccc'],
 ['ccc', 'ccc', 'ccc', 'ccc', 'ccc']]
阿神

不造轮子了:

from itertools import groupby
from pprint import pprint

pprint([list(v) for _, v in groupby(lst)])

输出:

[['aaa', 'aaa', 'aaa', 'aaa'],
 ['ccc', 'ccc'],
 ['aaa', 'aaa', 'aaa', 'aaa'],
 ['ccc', 'ccc', 'ccc'],
 ['aaa', 'aaa'],
 ['ccc', 'ccc', 'ccc', 'ccc', 'ccc']]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号