itertools.groupby()是您的解决方案。
newlst = [k for k, g in itertools.groupby(lst)]
如果您希望通过项的值对分组大小进行分组和限制分组大小,这意味着8 4将是[4,4],而9 3将是[3,3,3],这里有2个选项可以做到:
import itertoolsdef special_groupby(iterable): last_element = 0 count = 0 state = False def key_func(x): nonlocal last_element nonlocal count nonlocal state if last_element != x or x >= count: last_element = x count = 1 state = not state else: count += 1 return state return [next(g) for k, g in itertools.groupby(iterable, key=key_func)]special_groupby(lst)
要么
def grouper(iterable, n, fillvalue=None): "Collect data into fixed-length chunks or blocks" # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return itertools.zip_longest(*args, fillvalue=fillvalue)newlst = list(itertools.chain.from_iterable(next(zip(*grouper(g, k))) for k, g in itertools.groupby(lst)))选择您认为合适的那个。两种方法都适用于数字> 0。



