Python列表组合异常:为何代码返回[None, None]?
问题排查与修复
你的代码得到[None, None]是两个关键错误导致的:
- 错误1:未真正复制列表
copy = list只是让copy变量和原list指向同一个列表对象,根本没创建新副本。每次循环修改的都是原列表,后续操作还会覆盖之前的修改。 - 错误2:误用
append()的返回值
Python的list.append()方法是原地修改列表,它的返回值是None。你把possible_sequence赋值为这个返回值,往new_list里添加的自然都是None。
修复后的代码
original_list = ['a', 'b', 'c'] continuations = ['d', 'f'] new_list = [] for element in continuations: # 真正复制原列表,以下三种方式任选其一即可 copy = original_list.copy() # 方式1 # copy = original_list[:] # 方式2 # copy = list(original_list) # 方式3 # 原地修改副本,无需接收返回值 copy.append(element) # 将修改后的副本加入结果列表 new_list.append(copy)
运行后就能得到期望的[['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'f']]。
另外建议别用list当变量名,它是Python内置类型的名称,容易引发冲突。
内容的提问来源于stack exchange,提问作者afreelunch
相关产品推荐
相关产品推荐

