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

如何将含约200个元素的列表打乱并划分为各含19元素的子列表?

问题分析

你写的代码存在几个核心问题:

  • 列表元素都是单个整数,但代码里用了for a, b in list_ids,试图把每个元素拆成两个值,会直接抛出ValueError
  • lambda里的list_ids[1]是取原列表的第二个元素,不是当前要排序的元素,逻辑完全错误
  • 用这种复杂方式打乱列表没必要,Python标准库有更直接的实现方法

正确实现方案

要完成「打乱列表→分割为19元素子列表」的需求,分两步即可:

1. 打乱列表

用random.shuffle()方法原地打乱列表(如果不想修改原列表,先复制一份)。

2. 分割子列表

通过切片循环按步长19分割打乱后的列表。

完整代码示例:

import random

list_ids =  [10148, 10149, 10150, 10151, 10152, 10153, 10154, 10155, 10156, 10157, 10158, 10159, 10160, 10161, 10163, 10164, 10165, 10167, 10168, 10169, 10170, 10171, 10172, 10173, 10174, 10175, 10177, 10178, 10179, 10180, 10181, 10182, 10183, 7137, 7138, 7139, 7142, 7143, 7148, 7150, 7151, 7152, 7153, 7155, 7156, 7157, 9086, 9087, 9088, 9089, 9090, 9091, 9094, 9095, 9096, 9097, 2164]

# 复制原列表避免修改原始数据,然后打乱
shuffled_ids = list_ids.copy()
random.shuffle(shuffled_ids)

# 分割为每个包含19个元素的子列表
chunk_size = 19
result = [shuffled_ids[i:i+chunk_size] for i in range(0, len(shuffled_ids), chunk_size)]

# 查看结果
for idx, chunk in enumerate(result, 1):
    print(f"子列表 {idx}: {chunk}")

代码说明

  • list.copy():创建原列表的浅拷贝,保证原始数据不受打乱操作影响
  • random.shuffle():Python官方推荐的高效列表打乱方法,原地修改列表
  • 列表推导式的切片逻辑:从索引i开始取最多19个元素,步长设为19,自动循环到列表末尾

你的原列表总共有57个元素,刚好能分成3个各含19元素的子列表,不会有剩余元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:55:23