You need to enable JavaScript to run this app. Python列表insert方法直接赋值/追加时返回None的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python列表insert方法直接赋值/追加时返回None的问题咨询

核心问题根源

Python中所有对列表的原地修改方法(包括insert()、append()、sort()、reverse()等),都只会修改列表本身,执行后返回值固定为None,不会返回修改后的列表,这是你两段改写代码出错的根本原因。

第一段正常代码的逻辑

myList1=[[1,2],[3,4],[5,6]]
myList2=["abc","def","ghi"]
myList3=[]
for i in range(3):
    temp=myList1[i]
    temp.insert(0,myList2[i])
    myList3.append(temp)
print(myList3)

这段代码里你先把myList1[i]对应的子列表赋值给temp,然后调用temp.insert()原地修改这个子列表(列表是可变对象,temp和myList1[i]指向同一块内存,修改temp等于同步修改myList1[i]),最后把修改后的temp(也就是处理好的子列表)加入myList3,所以结果符合预期,输出为[['abc', 1, 2], ['def', 3, 4], ['ghi', 5, 6]]。

第二段改写代码的问题

myList1=[[1,2],[3,4],[5,6]]
myList2=["abc","def","ghi"]
myList3=[]
for i in range(3):
    myList3.append(myList1[i].insert(0,myList2[i]))
print(myList3)

你直接把insert()方法的返回值加入了myList3,而insert()返回的是None,所以最终myList3的结果是[None, None, None]。
注意:这时候原myList1其实已经被修改成了你想要的结构,只是你存入myList3的是方法返回值,不是修改后的列表。

第三段改写代码的问题

myList1=[[1,2],[3,4],[5,6]]
myList2=["abc","def","ghi"]
myList3=[]
for i in range(3):
    temp=myList1[i].insert(0,myList2[i])
    myList3.append(temp)
print(myList3)

和第二段本质是同一个问题,你把insert()返回的None赋值给了temp,最后存入myList3的还是None,结果自然不对。


优化写法参考

如果你不想修改原myList1的内容,可以用列表拼接的方式实现需求,不需要用insert():

myList1=[[1,2],[3,4],[5,6]]
myList2=["abc","def","ghi"]
myList3 = [[val] + sub_list for val, sub_list in zip(myList2, myList1)]
print(myList3)

内容的提问来源于stack exchange,提问作者Stef1611

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:45:03