Python 列表按组划分反转奇数组后按位置合并的报错解决
问题修复方案
核心错误原因
- 你拆分奇偶索引组后直接拼接的操作打乱了组的原有顺序,得到的
[偶0, 偶2, 奇1, 奇3]和预期的[偶0, 奇1, 偶2, 奇3]顺序完全不符 - 代码中
fevngps属于未定义变量,直接传入函数会触发类型错误 - 使用
zip_longest时没有对分组列表做解包,无法实现按位置配对不同子列表的元素
修复后完整代码
from itertools import zip_longest num = 14 grp = 4 # 1. 生成分组列表 lst = list(range(num)) grouped_lst = [lst[i:i+grp] for i in range(0, num, grp)] # 2. 反转奇数索引的组(索引从0开始计数) for idx in range(len(grouped_lst)): if idx % 2 == 1: grouped_lst[idx] = grouped_lst[idx][::-1] # 3. 按位置合并元素,过滤掉填充的None值 sollst = [[x for x in t if x is not None] for t in zip_longest(*grouped_lst)] print(sollst)
运行结果
[[0, 7, 8, 13], [1, 6, 9, 12], [2, 5, 10], [3, 4, 11]]
和你预期的输出完全一致。
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

