如何将列表元素对应追加到嵌套列表的各子列表末尾
嘿,这个需求用Python很容易实现,给你两种实用的方法:
解决方案
方法一:直接修改原列表(循环方式)
如果想要直接修改原有的l2列表,用嵌套循环就可以搞定,逻辑清晰易懂:
l1 = [56, 92] l2 = [[['abc','cda'],['abc','dba']], [['xyz','sdf'],['sdf','dfg'],['pdf','hfg']]] # 遍历l1的索引,关联l2对应的外层子列表 for idx in range(len(l1)): # 给当前外层子列表里的每个内层列表追加对应数值 for inner_list in l2[idx]: inner_list.append(l1[idx]) print(l2) # 输出结果:[[['abc', 'cda', 56], ['abc', 'dba', 56]], [['xyz', 'sdf', 92], ['sdf', 'dfg', 92], ['pdf', 'hfg', 92]]]
解释:因为l1的元素和l2的外层子列表是一一对应的,通过索引idx把两者关联起来。内层循环遍历每个外层子列表里的小列表,用append()方法把l1[idx]追加到末尾,直接修改原列表l2。
方法二:生成新列表(列表推导式)
如果不想改动原有的l2,可以用列表推导式生成一个全新的结果列表,写法更简洁:
l1 = [56, 92] l2 = [[['abc','cda'],['abc','dba']], [['xyz','sdf'],['sdf','dfg'],['pdf','hfg']]] # 用zip配对l2的外层子列表和l1的元素,生成新列表 new_l2 = [[inner_list + [num] for inner_list in outer_list] for outer_list, num in zip(l2, l1)] print(new_l2) # 输出结果:[[['abc', 'cda', 56], ['abc', 'dba', 56]], [['xyz', 'sdf', 92], ['sdf', 'dfg', 92], ['pdf', 'hfg', 92]]]
解释:zip(l2, l1)会把l2的每个外层子列表和l1对应的元素配对成元组。然后通过两层列表推导式,对每个外层子列表里的inner_list,用+ [num]的方式拼接出新的列表,最终得到一个不影响原列表的新结果。
内容的提问来源于stack exchange,提问作者Saurabh Patil
相关产品推荐
相关产品推荐

