Python如何通过for循环按指定映射关系生成对应长度的新列表z
实现方案
思路说明
- 先建立
v元素到对应x取值的映射关系,后续查找时不用每次遍历v列表匹配,执行效率更高 - 用for循环遍历
y的每一个元素,从映射关系中取出对应数值追加到z列表即可,最终z的长度和y完全一致
代码实现
高效版本(推荐)
v = ['a', 'c', 'b'] x = [0.2, 0.3, 0.5] y = ['a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'] z = [] # 构建映射字典 value_map = dict(zip(v, x)) # for循环遍历生成z for item in y: z.append(value_map[item]) print(z) # 输出:[0.2, 0.2, 0.5, 0.5, 0.5, 0.3, 0.3, 0.3]
纯循环匹配版本(无需提前构建字典,仅适合短列表场景)
v = ['a', 'c', 'b'] x = [0.2, 0.3, 0.5] y = ['a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'] z = [] for y_item in y: for idx, v_item in enumerate(v): if y_item == v_item: z.append(x[idx]) break
内容的提问来源于stack exchange,提问作者DreamyDeerz
相关产品推荐
相关产品推荐

