如何按指定模式将动态长度的偶数列表分割为子列表?
解决方案
先从示例中提炼明确的分割规则:
假设原列表长度为n(必须是4的倍数,因为要分割为n/4个各含4元素的子列表),计算k = n // 4。每个子列表对应原列表中从索引j开始,以k为步长取4个元素(j的取值范围是0到k-1)。
代码实现(Python)
def split_list(a): n = len(a) # 校验输入合法性:长度必须是4的倍数 if n % 4 != 0: raise ValueError("列表长度必须是4的倍数") k = n // 4 # 生成每个子列表:j从0到k-1,取a[j::k](刚好4个元素) return [a[j::k] for j in range(k)]
验证示例
- 第一个测试用例:
a = [311, 7426, 3539, 2077, 13, 558, 288, 176, 6, 196, 91, 54, 5, 202, 116, 95] result = split_list(a) # 输出结果与需求完全匹配: # [[311, 13, 6, 5], [7426, 558, 196, 202], [3539, 288, 91, 116], [2077, 176, 54, 95]]
- 第二个测试用例:
a = [311, 7426, 3539, 2077, 1 ,13, 558, 288, 176, 1, 6, 196, 91, 54, 1, 5, 202, 116, 95, 1] result = split_list(a) # 输出结果与需求完全匹配: # [[311, 13, 6, 5], [7426, 558, 196, 202], [3539, 288, 91, 116], [2077, 176, 54, 95], [1, 1, 1, 1]]
动态列表适配
代码会根据当前列表长度实时计算步长k,只要列表长度始终保持为4的倍数,无论增删元素后,直接调用split_list即可得到正确结果,无需修改核心逻辑。
内容的提问来源于stack exchange,提问作者Diauro
相关产品推荐
相关产品推荐

