Skip to main content
 首页 » 编程设计

python之列表列表 python : combine list elements that are the same size

2025年05月04日13jyk

我有一个 python 列表列表:

[[1],[2],[3,4],[5,6],[7,8,9,10,11],[12,13,14,15,16],[17]] 

如果子列表包含相同数量的元素,我想将它们组合成一个子列表:

[[1,2,17],[3,4,5,6],[7,8,9,10,11,12,13,14,15,16]] 

有没有一种简单的方法可以做到这一点?

请您参考如下方法:

使用 itertools 中的 groupby 和 chain

例如:

from itertools import groupby, chain 
 
lst = [[1],[2],[3,4],[5,6],[7,8,9,10,11],[12,13,14,15,16],[17]] 
 
result = [list(chain.from_iterable(v)) for k, v in groupby(sorted(lst, key=lambda h: len(h)), lambda x: len(x))] 
print(result) 

输出:

[[1, 2, 17], [3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13, 14, 15, 16]] 
  • sorted(lst, key=lambda h: len(h)) 按 len 对列表进行排序
  • 然后使用 groupby 按列表的 len 对您的列表进行分组