Python中嵌套列表对应子列表的元素级合并及错误排查
解决Python嵌套列表对应位置子列表元素合并问题
问题描述
输入三个嵌套列表:
a = [['alpha','beta','gamma'],['delta','epsilon','zeta'],['eta','theta','iota']] b = [['AB'],['CD'],['EF']] c = [['1','2','3'],['4','5','6'],['7','8','9']]
需要将对应位置的子列表元素合并,得到期望输出:
d = [['alpha','beta','gamma','AB','1','2','3'],['delta','epsilon','zeta','CD','4','5','6'],['eta','theta','iota','EF','7','8','9']]
原代码错误分析
你写的代码出现TypeError: list indices must be integers or slices, not list,是因为for x in a循环时,x是a中的子列表(比如['alpha','beta','gamma']),而列表索引必须是整数,不能用列表当索引去取a[x]、b[x]。
解决方案
方法1:通过索引遍历
用range(len(a))获取整数索引,然后根据索引取三个列表中对应位置的子列表进行拼接:
d = [] for i in range(len(a)): merged = a[i] + b[i] + c[i] d.append(merged)
方法2:使用zip()函数(更简洁)
zip(a, b, c)会把三个列表中对应位置的子列表打包成元组,直接遍历这些元组并拼接:
d = [] for sub_a, sub_b, sub_c in zip(a, b, c): d.append(sub_a + sub_b + sub_c)
方法3:列表推导式(一行代码解决)
把上面的循环简化成列表推导式,更简洁高效:
d = [sub_a + sub_b + sub_c for sub_a, sub_b, sub_c in zip(a, b, c)]
运行以上任意一种方法,都能得到你想要的输出结果。
内容的提问来源于stack exchange,提问作者Teresa Bonserio
相关产品推荐
相关产品推荐

