如何编写函数实现两个嵌套列表的zip操作生成嵌套元组列表?
问题:实现嵌套列表合并的
tuples_maker函数 需求说明
编写名为tuples_maker的函数,将两个嵌套列表对应位置的元素配对成元组,最终返回嵌套列表结构。
示例输入:
l1 = [[1,2,3,4], [10,11,12]] l2 = [[-1,-2,-3,-4], [-10,-11,-12]]
期望输出:
[[(1, -1), (2, -2), (3, -3), (4, -4)], [(10, -10), (11, -11), (12, -12)]]
遇到的问题
使用zip结合循环时出现多个问题:
- 执行
list(zip(a,b) for a,b in zip(l1,l2)),得到的是包含zip迭代器的列表,而非预期的嵌套元组列表:
[<zip object at 0x000002286F965208>, <zip object at 0x000002286F965AC8>]
- 不使用列表推导式时,循环内的赋值会覆盖结果,仅保留最后一组:
for a,b in zip(l1,l2): c=list(zip(a,b)) print(c) # 输出:[(10, -10), (11, -11), (12, -12)]
- 循环内打印虽能得到正确的每一组,但无法整合成一个完整的嵌套列表:
for a,b in zip(l1,l2): c=list(zip(a,b)) print(c) # 输出: # [(1, -1), (2, -2), (3, -3), (4, -4)] # [(10, -10), (11, -11), (12, -12)]
解决方案
方法1:列表推导式(简洁实现)
在嵌套层用list()转换zip对象,直接生成目标嵌套列表:
def tuples_maker(l1, l2): return [list(zip(a, b)) for a, b in zip(l1, l2)]
方法2:普通for循环(分步构建)
初始化空列表,每次循环将转换后的子列表追加进去:
def tuples_maker(l1, l2): result = [] for a, b in zip(l1, l2): result.append(list(zip(a, b))) return result
测试验证:
l1 = [[1,2,3,4], [10,11,12]] l2 = [[-1,-2,-3,-4], [-10,-11,-12]] print(tuples_maker(l1, l2)) # 输出:[[(1, -1), (2, -2), (3, -3), (4, -4)], [(10, -10), (11, -11), (12, -12)]]
内容的提问来源于stack exchange,提问作者resssslll
相关产品推荐
相关产品推荐

