首页 > 解决方案 > 在 Python 中扩展列表时的一些奇怪行为

问题描述

我想知道为什么下面的Python代码

aa = []
for x in range(5):
    bb = aa
    print(bb)
    bb.extend(['a','bb'])
    print(bb)

结果是:

[]
['a', 'bb']
['a', 'bb']
['a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb', 'a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb', 'a', 'bb', 'a', 'bb']
['a', 'bb', 'a', 'bb', 'a', 'bb', 'a', 'bb', 'a', 'bb']

第三行不会bb = aa重置bbaawhich is 的值[]吗?为什么只适用于aa时还要延长?extendbb

这是否意味着bb = aa不是创建 in 的副本,aa而是bb仅引用aa?我应该如何创建aa不是引用的副本aa

标签: pythonlistextend

解决方案


推荐阅读