You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python for循环星号解包如何固定各解包变量的列表长度?

实现方案

方案1:切片提取(全Python版本兼容)

直接按索引范围截取对应长度的片段即可,逻辑直观不依赖特定Python版本:

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

for sub_list in l:
    x = sub_list[:4]  # 截取前4个元素
    y = sub_list[4:7] # 截取索引4-6的3个元素
    z = sub_list[7]   # 取最后1个元素
    print(x)
    print(y)
    print(z)

运行后会输出你需要的结果,第一个子列表对应输出[1, 2, 3, 4]、[5, 6, 7]、8,第二个子列表对应输出[9, 10, 11, 12]、[13, 14, 15]、16。

方案2:定长解包(适合子列表长度固定的场景)

你的子列表长度固定为8(刚好满足4+3+1的拆分规则),可以直接用变量匹配所有位置,可读性更高:

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

for a, b, c, d, e, f, g, z in l:
    x = [a, b, c, d]
    y = [e, f, g]
    print(x)
    print(y)
    print(z)

补充说明:Python不支持同一赋值层级出现多个*表达式,因此无法直接用*x, *y, z的写法同时匹配两个变长片段,上述两种是当前最简洁的实现方式。


内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:24:03