You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表合并疑问:extend赋值后B[0]变为None的原因

列表extend操作返回None的原因及无if条件的合并方案

为什么B[0]变成了None?

Python里的list.extend()是原地修改列表的方法——它会直接把传入的可迭代对象元素添加到原列表末尾,但这个方法的返回值是None,不会返回修改后的列表。

你执行B[0] = B[0].extend(B[1])时,本质是把extend()返回的None赋值给了B[0],自然就覆盖了原来的子列表。

无if条件的解决办法

方法1:直接用extend原地修改(不赋值)

既然extend是原地修改,直接调用即可,不需要赋值操作:

# 示例B
B = [[1, 2], [3, 4], [5, 6]]
# 依次合并子列表到B[0]
B[0].extend(B[1])
B[0].extend(B[2])
# 最终合并后的列表就是B[0]
print(B[0])  # 输出 [1, 2, 3, 4, 5, 6]

方法2:列表相加生成新列表

列表相加会返回一个全新的合并列表,语法更简洁:

B = [[1, 2], [3, 4], [5, 6]]
merged_list = B[0] + B[1] + B[2]
print(merged_list)  # 输出 [1, 2, 3, 4, 5, 6]

方法3:循环合并(适合子列表数量不确定的情况)

如果要保留循环逻辑,直接对目标列表执行extend即可,不需要赋值:

B = [[1, 2], [3, 4], [5, 6]]
merged_list = B[0].copy()  # 复制第一个子列表,避免修改原B的结构
for sublist in B[1:]:
    merged_list.extend(sublist)
print(merged_list)  # 输出 [1, 2, 3, 4, 5, 6]

如果不需要保留原列表B,也可以直接用merged_list = B[0],再循环extend后续子列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:52:32