Python实现嵌套列表元素拆分、复制生成目标结构新列表
Python嵌套列表按字段拆分重组实现方案
核心思路
遍历原始列表的每个嵌套子项,对子项第三个元素按逗号做分割,每一个分割出来的值都和当前子项的前两个元素组合成新的嵌套列表,收集所有新列表就得到目标结果。
可直接运行的实现代码
# 原始输入数据 data_v1 = [ ['Toronto', 'blue', 'Val1, Val2'], ['Amsterdam', 'red', 'Val1'], ['New York', 'white', 'Val1, Val2'] ] data_v2 = [] for row in data_v1: # 拆包当前行的三个字段 loc, color, raw_val = row # 按逗号拆分第三个字段,同时去除每个值前后的多余空格 split_vals = [single_val.strip() for single_val in raw_val.split(',')] # 逐个拼接生成新行 for val in split_vals: data_v2.append([loc, color, val])
运行后打印data_v2就能得到你预期的结构:
[ ['Toronto', 'blue', 'Val1'], ['Toronto', 'blue', 'Val2'], ['Amsterdam', 'red', 'Val1'], ['New York', 'white', 'Val1'], ['New York', 'white', 'Val2'] ]
简洁写法
如果偏好更短的代码,也可以用列表推导式一行完成处理:
data_v2 = [[loc, color, v.strip()] for loc, color, raw_val in data_v1 for v in raw_val.split(',')]
说明
- 代码里的
strip()是为了处理逗号后自带的空格(比如示例里Val1, Val2拆分后第二个值前面带空格),如果你的原始数据里逗号分隔的内容没有多余空白,可以去掉这步处理。 - 这个逻辑兼容任意数量的逗号分隔值,哪怕第三个元素拆分出3个及以上的值,也会自动生成对应数量的新行,不需要额外改代码。
内容的提问来源于stack exchange,提问作者biggambino
相关产品推荐
相关产品推荐

