如何将列表一次性拆分为多个固定长度的子列表?
按指定长度拆分固定列表的一行写法
你想要的*list1[13], *list2[8], *rest = data这种语法在Python里是不合法的,因为解包语法不支持直接指定批量元素的长度。不过有几种简洁的方式能实现你要的效果:
直接一行赋值(最直观)
如果只是想把拆分逻辑写成一行,直接用切片赋值就行,可读性拉满:
list1, list2, rest = data[:13], data[13:21], data[21:]
自定义拆分函数(复用性强)
如果需要多次按不同长度拆分列表,可以写个小函数封装逻辑,之后一行调用即可:
def split_list(lst, *sizes): chunks = [] idx = 0 for size in sizes: chunks.append(lst[idx:idx+size]) idx += size chunks.append(lst[idx:]) return chunks # 一行拆分 list1, list2, rest = split_list(data, 13, 8)
用itertools.islice实现(无需额外函数)
借助itertools.islice可以迭代拆分,也能写成一行(用分号分隔):
from itertools import islice it = iter(data); list1 = list(islice(it,13)); list2 = list(islice(it,8)); rest = list(it)
这几种方式都能替代你原来的手动切片或循环处理,根据场景选就行。
内容的提问来源于stack exchange,提问作者Xoriun
相关产品推荐
相关产品推荐

