在以下代码中:
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
Run Code Online (Sandbox Code Playgroud)
我想应该回归[[], [1], [2], [2, 1]],但实际上我得到了回报[[1], None, [2, 1], None].即,[]已被转换为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
Run Code Online (Sandbox Code Playgroud)
任何的想法?谢谢!
list.append()总是回来None,所以
all_subsets.append(subset.append(left_most))
Run Code Online (Sandbox Code Playgroud)
附加None到all_subsets.你可能只是想要
subset.append(left_most)
Run Code Online (Sandbox Code Playgroud)
既然你已经追加subset到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
Run Code Online (Sandbox Code Playgroud)
这会产生[[], [1], [2], [2, 1]]你所期望的.
| 归档时间: |
|
| 查看次数: |
4329 次 |
| 最近记录: |