如何将list2元素依次插入list1对应子列表头部生成list3?
简便实现方法分享
嘿,这个需求在Python里其实有好几种简洁的实现方式,完全不用复杂操作,我给你列两个最常用的:
方法一:列表推导式 + zip(最直观易读)
这是我最推荐的写法,逻辑清晰,一眼就能看懂:
list1 = [[0, 4, 0, 0], [2, 0, 4, 0], [9, 8, 0, 0], [0, 2, 5, 0]] list2 = ['a', 'b', 'c', 'd'] # 替换成你实际的a/b/c/d值即可 list3 = [[item2] + item1 for item2, item1 in zip(list2, list1)]
原理说明:
zip(list2, list1)会把两个列表的对应元素一一配对,比如第一个配对是('a', [0,4,0,0]),第二个是('b', [2,0,4,0]),以此类推。- 列表推导式里,我们把每个
item2(来自list2的元素)放到单元素列表[item2]中,再用+和对应的item1(list1的子列表)拼接,就得到了目标子列表。
方法二:map + lambda(更简洁的函数式写法)
如果你喜欢函数式编程风格,用map也能快速实现:
list1 = [[0, 4, 0, 0], [2, 0, 4, 0], [9, 8, 0, 0], [0, 2, 5, 0]] list2 = ['a', 'b', 'c', 'd'] list3 = list(map(lambda x, y: [x] + y, list2, list1))
原理说明:
map函数会依次取list2和list1的对应元素,传给lambda函数。- lambda函数接收两个参数
x(来自list2)和y(来自list1的子列表),返回[x] + y,也就是把x放在子列表开头。 - 最后用
list()把map对象转换成列表,就得到了list3。
小提醒:
如果list2和list1的长度不一致,zip会以较短的列表长度为准。如果需要处理长度不一致的场景,可以用itertools.zip_longest,不过看你的需求,两个列表长度应该是匹配的,这个情况暂时不用考虑~
内容的提问来源于stack exchange,提问作者kts
相关产品推荐
相关产品推荐

