如何逐步消除python列表中的项目?

我正在使用“for 循环”逐步消除项目并生成包含不同组合的新列表(feature_combination)。

feature_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
feature_combination = []
for i in range(7):
    feature_list.pop()
    feature_combination.append(feature_list)
feature_combination

理想的输出应该是:

[['A', 'B', 'C', 'D', 'E', 'F'],['A', 'B', 'C', 'D', 'E'],['A', 'B', 'C', 'D'],['A', 'B', 'C'],['A', 'B'],['A'], []]

但目前的输出是:
[[], [], [], [], [], [], []]

当我逐步打印进度时:

feature_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
feature_combination = []
for i in range(7):
    feature_list.pop()
    print(feature_list)

我可以得到以下结果:

['A', 'B', 'C', 'D', 'E', 'F']
['A', 'B', 'C', 'D', 'E']
['A', 'B', 'C', 'D']
['A', 'B', 'C']
['A', 'B']
['A']
[]

那么,为什么我不能将这些结果附加到空列表中?问题是什么?

回答

这是因为当你打电话feature_combination.append(feature_list),你追加引用feature_list,没有实际价值feature_list。由于feature_list在 for 循环结束时为空,因此对它的所有引用也是空的。

您可以通过更改feature_combination.append(feature_list)为来修复它feature_combination.append(feature_list.copy()),这会生成要存储的列表副本。


以上是如何逐步消除python列表中的项目?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>