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

如何优雅实现短列表遍历索引越界后从头循环及扩展列表?

优雅实现短列表循环匹配长列表的需求

需求说明

已知两个列表my_list_1和my_list_2,且len(my_list_1) < len(my_list_2),需要完成两个目标:

  1. 遍历两个列表时,当索引超出my_list_1长度,让my_list_1的索引从头循环,避免越界错误,同时将对应位置元素相加存入结果列表。
  2. 实现extend_list函数,将my_list_1复制扩展至指定长度(即my_list_2的长度),例如输入[1,2,3]和长度5,返回[1,2,3,1,2]。

示例场景

my_list_1 = [1,2,3]
my_list_2 = [5,6,7,8,9]
result = []

# 期望的计算逻辑:
# i == 0: 1 + 5 = 6
# i == 1: 2 + 6 = 8
# i == 2: 3 + 7 = 10
# i == 3: 1 + 8 = 9
# i == 4: 2 + 9 = 11

已有实现(写法繁琐)

你尝试的两种方法虽能运行,但逻辑冗余:
方法1:

x = 0
for i in range(len(my_list_2)):
    if i % (len(my_list_1) - 1) == 0 or i == 0:
        x = 0
    else:
        x+=1
    result.append(my_list_1[x] + my_list_2[i])

方法2:

x = 0
for i in range(len(my_list_2)):
    if x == (len(my_list_1) - 1) or i == 0:
        x = 0
    else:
        x += 1
    result.append(my_list_1[x] + my_list_2[i])

优雅实现方案

1. 直接遍历相加的简洁写法

利用取模运算直接计算my_list_1的循环索引,这是最直观高效的方式:

my_list_1 = [1,2,3]
my_list_2 = [5,6,7,8,9]
result = []
len_1 = len(my_list_1)

for i in range(len(my_list_2)):
    # 用i对my_list_1长度取模,自动循环索引
    result.append(my_list_1[i % len_1] + my_list_2[i])

print(result)  # 输出: [6, 8, 10, 9, 11]

如果追求极致简洁,可用列表推导式:

len_1 = len(my_list_1)
result = [my_list_1[i % len_1] + num for i, num in enumerate(my_list_2)]

2. extend_list扩展函数实现

提供两种风格的实现,可根据场景选择:

方法一:循环生成(直观易读)

def extend_list(short_list, target_len):
    len_short = len(short_list)
    if len_short == 0:
        return []
    return [short_list[i % len_short] for i in range(target_len)]

# 测试
print(extend_list([1,2,3], 5))  # 输出: [1,2,3,1,2]

方法二:列表拼接(性能更优)

通过计算重复次数和剩余元素数,直接拼接列表,底层优化过的列表乘法比循环遍历效率更高:

def extend_list(short_list, target_len):
    len_short = len(short_list)
    if len_short == 0:
        return []
    # 计算完整重复次数和剩余元素数量
    repeat_times = target_len // len_short
    remainder = target_len % len_short
    # 拼接结果
    return short_list * repeat_times + short_list[:remainder]

# 测试
print(extend_list([1,2,3], 5))  # 输出: [1,2,3,1,2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:05:24