在下面的代码中:
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]]。
