嵌套循环操作后如何保持列表结构?Python列表拼接问题
解决列表拼接并保留嵌套结构的问题
现有两个列表:
x = [['a','b','c'],['e','f']] y = ['w','x','y']
需求是将x的每个元素与y的每个元素拼接,同时保留x的嵌套结构,期望输出:
[['aw','ax','ay','bw','bx','by','cw','cx','cy'],['ew','ex','ey','fw','fx','fy']]
你的原代码能生成正确的拼接元素,但因为直接把所有结果追加到同一个一维列表中,丢失了原嵌套结构。修正方法很简单:给x的每个子列表对应创建临时子列表,把该子列表的拼接结果存入临时列表后,再将临时列表加入最终结果:
res = [] for sublist in x: temp_sublist = [] for char in sublist: for suffix in y: temp_sublist.append(char + suffix) res.append(temp_sublist)
替代多层嵌套循环的更优方法
用Python的嵌套列表推导式可以一行完成,代码更简洁高效:
res = [[char + suffix for char in sublist for suffix in y] for sublist in x]
如果偏好逻辑更直观的写法,也可以用itertools.product生成元素的笛卡尔积后再拼接:
import itertools res = [[c1 + c2 for c1, c2 in itertools.product(sublist, y)] for sublist in x]
内容的提问来源于stack exchange,提问作者Wiliam
相关产品推荐
相关产品推荐

