如何简化Python中按x对应次数添加y元素到列表的代码
实现方案
你可以通过遍历两个列表的配对元素实现动态适配,无需硬编码下标,新增元素也不用修改循环逻辑:
易读的基础实现
x = [2, 3, 1] y = ['a', 'b', 'c'] z = [] # 用zip配对对应位置的次数和值 for count, value in zip(x, y): # 按次数重复添加值 for _ in range(count): z.append(value) print(z)
输出结果和预期一致:['a', 'a', 'b', 'b', 'b', 'c']
如果后续给x新增元素4、y新增元素'd',代码会自动生成4个'd'添加到结果列表,不需要新增任何循环代码。
简洁的一行实现(列表推导式)
如果想要更短的代码,可以用嵌套列表推导式实现相同效果:
x = [2, 3, 1] y = ['a', 'b', 'c'] z = [value for count, value in zip(x, y) for _ in range(count)] print(z)
高性能实现(适合处理大体积列表)
如果x和y的元素量很大,推荐用itertools内置方法优化性能:
from itertools import repeat, chain x = [2, 3, 1] y = ['a', 'b', 'c'] z = list(chain.from_iterable(repeat(value, count) for count, value in zip(x, y))) print(z)
内容的提问来源于stack exchange,提问作者DreamyDeerz
相关产品推荐
相关产品推荐

