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

如何将Python列表切割为含指定数量有效元素的二维列表?

问题分析与解决

先说说你写的代码问题出在哪:

  • 内层循环直接遍历整个myList,每次都把所有元素往子列表里塞,这肯定会重复添加大量元素,完全不符合切割需求。
  • 没有从原列表中移除已处理的元素,导致每次循环都从头取元素,根本没法逐步推进切割。
  • 提前固定了4个子列表的数量,要是原列表元素数量变化,这种写法就彻底失效了。

你的核心需求是每个子列表排除"skip"和"hop"后,要包含4个有效元素,正确的思路应该是逐个处理原列表元素,动态构建子列表,满足条件就切换到下一个子列表。

正确代码实现

myList = [1,"skip",3,4,"hop",7,6,"9",5,59,3,6,"skip",80,"skip","hop",78,67,827,64,53]

result = []
current_sub = []
valid_count = 0

for item in myList:
    current_sub.append(item)
    # 统计当前子列表的有效元素数量
    if item not in ("skip", "hop"):
        valid_count += 1
    # 有效元素达标时,保存子列表并重置状态
    if valid_count == 4:
        result.append(current_sub)
        current_sub = []
        valid_count = 0

# 处理最后可能剩余的未达标子列表
if current_sub:
    result.append(current_sub)

print(result)

代码说明

  1. 初始化结果列表、当前子列表和有效元素计数器,用来追踪切割进度。
  2. 逐个遍历原列表元素:
    • 把元素加入当前子列表。
    • 如果元素不是"skip"或"hop",就给有效计数器加1。
    • 当有效计数器达到4时,把当前子列表存入结果,然后重置当前子列表和计数器,准备下一轮切割。
  3. 遍历结束后,如果还有未完成的子列表(比如原列表最后剩下不足4个有效元素的情况),也一并加入结果。

运行这段代码就能得到你期望的输出:

[[1, 'skip', 3, 4, 'hop', 7], [6, '9', 5, 59], [3, 6, 'skip', 80, 'skip', 'hop', 78], [67, 827, 64, 53]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:20:19