如何按list1对应数值重复list2元素并合并成最终列表?
解决方案
这里有几种实用的方法实现你要的需求:
方法一:基础循环拼接
这是最直观的写法,适合新手理解:
list1 = [5, 1, 20, 19, 1, 1, 1, 1, 1] list2 = ['29888.20','29888.20','34298.20','35724.20','36014.20','37924.20','43886.20','54282.20', '79417.20'] final_list = [] # 配对两个列表的对应元素 for repeat_count, value in zip(list1, list2): # 把当前value重复指定次数后加入结果列表 final_list.extend([value] * repeat_count)
运行后final_list的长度就是50,和list1元素总和一致。
方法二:列表推导式(简洁版)
用一行代码搞定,是更贴合Python风格的写法:
final_list = [value for repeat_count, value in zip(list1, list2) for _ in range(repeat_count)]
逻辑和循环写法完全一致,只是把嵌套循环浓缩成推导式,代码更简洁紧凑。
方法三:高效迭代(适合大数据量)
如果你的列表元素非常多,用itertools可以避免生成大量临时列表,节省内存开销:
from itertools import chain # 生成器版本,内存占用更低 final_list = list(chain.from_iterable((value for _ in range(repeat_count)) for repeat_count, value in zip(list1, list2)))
chain.from_iterable会逐个迭代每个重复序列,不会一次性生成所有临时列表,处理大数据集时性能优势更明显。
内容的提问来源于stack exchange,提问作者Duvan Smuts
相关产品推荐
相关产品推荐

