Python如何根据另一列表对应值重复目标列表的对应元素
实现方案
方法1:列表推导式(推荐)
通过zip配对两个列表的对应元素,嵌套循环展开生成结果,代码最简洁:
nums = [2, 3, 5] mylist = ["aaa", "bbb", "ccc"] result = [item for item, count in zip(mylist, nums) for _ in range(count)] print(result)
输出结果和预期一致:["aaa", "aaa", "bbb", "bbb", "bbb", "ccc", "ccc", "ccc", "ccc", "ccc"]
方法2:普通循环(适合新手理解)
如果对列表推导式语法不熟悉,可以用基础循环实现,逻辑完全相同:
nums = [2, 3, 5] mylist = ["aaa", "bbb", "ccc"] result = [] for content, repeat_cnt in zip(mylist, nums): result.extend([content] * repeat_cnt) print(result)
注意事项
- 需保证
nums和mylist长度一致,否则仅会处理到较短列表的最后一个元素 - 如果需要兼容两列表长度不一致的场景,可引入
itertools.zip_longest自定义默认重复次数
内容的提问来源于stack exchange,提问作者Martin Yordanov Georgiev
相关产品推荐
相关产品推荐

