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

如何实现整数列表与字符串列表对应次数拼接?代码错误求排查

列表“相乘”代码错误排查

问题背景

现有两个列表:

l1 = [2,2,3]
l2 = ['a','b','c']

想要实现两个列表“相乘”,得到预期输出:

# output: ['a','a','b','b','c','c','c']

但使用以下代码后:

l3 = []
for i in l2:
    for j in l1:
        l3.append(i)

得到的结果却是:

['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']

不符合预期,下面分析代码中的错误:

错误原因

你的代码逻辑是对l2里的每个元素,循环遍历整个l1的所有元素并重复添加,所以每个字符都会被添加3次(因为l1有3个元素),这和需求里“每个字符对应l1中同位置的次数”不匹配。

正确逻辑应该是:l2中第n个元素,重复添加的次数等于l1中第n个元素的值——也就是a加2次、b加2次、c加3次。

修正代码

可以用zip()函数把两个列表的对应元素配对,再按次数添加:

l1 = [2,2,3]
l2 = ['a','b','c']
l3 = []
for char, count in zip(l2, l1):
    l3.extend([char] * count)
print(l3)
# 输出: ['a','a','b','b','c','c','c']

也可以用更简洁的列表推导式写法:

l3 = [char for char, count in zip(l2, l1) for _ in range(count)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:54:38