如何使用List Comprehension合并两个列表?解决返回None问题
问题解析与正确实现方法
错误原因
list.append() 是原地修改列表的方法,它仅负责把元素添加到原列表末尾,本身返回值固定为None。你写的列表推导式 [list1.append(x) for x in list2],本质是遍历list2时收集每次append调用返回的None,所以最终得到全为None的列表;同时原list1会被修改为合并后的内容,但这不是你想要的独立列表list3。
正确实现方式
方法1:直接列表拼接(最简洁高效)
Python支持用+直接拼接两个列表,无需列表推导式:
list1 = ['a', 'b', 'c', 'd'] list2 = [1, 2, 3, 4] list3 = list1 + list2
执行后list3即为['a', 'b', 'c', 'd', 1, 2, 3, 4],且不会修改原list1和list2。
方法2:用列表推导式实现(满足需求场景)
如果一定要用列表推导式,可通过嵌套遍历构建新列表:
list3 = [item for sublist in [list1, list2] for item in sublist]
也可拆分为两个推导式后拼接:
list3 = [x for x in list1] + [x for x in list2]
两种写法都能生成目标列表,且不改动原列表。
方法3:复制后扩展(实用非推导式写法)
先复制list1,再用extend批量添加list2的元素:
list3 = list1.copy() list3.extend(list2)
内容的提问来源于stack exchange,提问作者Alin Khan
相关产品推荐
相关产品推荐

