Skip to main content
 首页 » 编程设计

python之附加一个空列表但被转换为 NoneType

2025年05月04日12duanxz

在下面的代码中:

all_subsets = [] 
subsets = [[], [2]] 
left_most = 1  
for subset in subsets: 
    print subset 
    all_subsets.append(subset) 
    all_subsets.append(subset.append(left_most)) 
print all_subsets 

我想返回值应该是[[], [1], [2], [2, 1]],但实际上我得到的是[[1]的返回值,无,[2, 1],无]。即,[] 已转换为 None。

我想是循环修改subset两次,指向同一个物理地址的问题。但是,即使我在修改列表之前制作本地副本也无法解决问题,例如:

all_subsets = [] 
subsets = [[], [2]] 
left_most = 1 
for subset in subsets: 
    print subset 
    subset_orig = list(subset) 
    subset_plus = list(subset).append(left_most) 
    all_subsets.append(subset_orig) 
    all_subsets.append(subset_plus) 
print all_subsets 

有什么想法吗?谢谢!

请您参考如下方法:

问题是 append()就地修改列表,并返回 None。

这是修复代码的一种方法:

all_subsets = [] 
subsets = [[], [2]] 
left_most = 1  
for subset in subsets: 
    print subset 
    all_subsets.append(subset) 
    all_subsets.append(subset + [left_most]) 
print all_subsets 

如您所料,这会生成 [[], [1], [2], [2, 1]]。