我想要一个智能打印列表.例如:
a=[2,2,2,1,1,1,1,1,1,1]
Run Code Online (Sandbox Code Playgroud)
我想要的打印结果如下: 2*3, 1*7
不喜欢: 2,2,2,1,1,1,1,1,1
Joh*_*ooy 11
>>> a = [2,2,2,1,1,1,1,1,1,1]
>>> from itertools import groupby
>>> ["{}*{}".format(k, sum(1 for x in g)) for k, g in groupby(a)]
['2*3', '1*7']
Run Code Online (Sandbox Code Playgroud)
或者为了代码重用的利益:
>>> def rle(seq):
... return ((k, sum(1 for x in g)) for k, g in groupby(seq))
...
>>> ["{}*{}".format(*x) for x in rle(a)]
['2*3', '1*7']
Run Code Online (Sandbox Code Playgroud)