说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
有这样一个列表:[a,a,b,b,b,b,c,c,c,a],需要转化成 [a,a],[b,b,b,b,],[c,c,c],[a]。就是说将列表中相邻相同的元素组成一个子列表。
解决的代码如下:
import itertools
l = ['a','a','b','b', 'b','b','c','c','c','a']
itertools.groupby(l)
# <itertools.groupby at 0x7fdd1b6c3900>
list(itertools.groupby(l))
'''
[('a', <itertools._grouper at 0x7fdd1b6e4eb0>),
('b', <itertools._grouper at 0x7fdd1b6e49d0>),
('c', <itertools._grouper at 0x7fdd1b6e4ee0>),
('a', <itertools._grouper at 0x7fdd1b6e4f70>)]
'''
[list(b) for a,b in itertools.groupby(l)]
# [['a', 'a'], ['b', 'b', 'b', 'b'], ['c', 'c', 'c'], ['a']]
利用 Python 的内置库 itertools
方法就解决了需求。
更新时间:2021-11-09 23:58:58 标签:python 列表