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

如何循环遍历列表并在末尾循环滚动,按步长迁移元素至新列表?

列表元素循环迁移实现方案

需求说明

给定初始列表和步长参数,需循环从原列表中按步长选取元素,将其移至新列表,直到原列表为空。若计数到列表末尾,则从头开始循环计数。
示例:
初始状态:

lst_one = [1, 2, 3, 4]
iterable = 6
lst_two = []

期望结果:

lst_one = []
lst_two = [2, 1, 4, 3]

要求:禁止使用函数或类。

原代码问题分析

你当前的代码使用range固定步长遍历,无法适应列表长度动态变化的情况,且不能循环回到列表开头,导致无法完成全部元素的迁移。

解决代码

# 输入处理
input_str = input()
step = int(input())
lst = input_str.split()
lst = [int(i) for i in lst]
new_list = []

current_index = step - 1
while lst:
    # 取模运算实现循环计数,确保索引在有效范围内
    current_index = current_index % len(lst)
    # 移除并获取目标元素,添加到新列表
    new_list.append(lst.pop(current_index))
    # 计算下一个目标元素的索引(因元素被移除,后续元素前移,故步长需减1)
    current_index += step - 1

# 输出结果
print(f"lst_one = {lst}")
print(f"lst_two = {new_list}")

逻辑说明

  1. 使用while循环持续处理,直到原列表为空;
  2. 每次通过current_index % len(lst)将索引限制在当前列表的有效范围内,实现循环计数;
  3. 用pop()方法直接移除并获取目标元素,简化操作;
  4. 每次计算下一个索引时,由于当前元素已被删除,后续元素的索引会前移一位,因此需在当前索引基础上加step - 1而非step。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:26:02