python - 在 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
重置bb
为aa
which is 的值[]
吗?为什么只适用于aa
时还要延长?extend
bb
这是否意味着bb = aa
不是创建 in 的副本,aa
而是bb
仅引用aa
?我应该如何创建aa
不是引用的副本aa
?
解决方案
推荐阅读
- swift - 如何返回超出其范围的安全展开的选项?
- pyspark - Spark/Impala 中的查询执行方法
- android - 将图像从 Android 上传到仅接受 JPEG 和 PNG 的服务器
- haproxy - Haproxy 代理检查 DRAIN(agent) 状态仍然接受新连接
- html - 响应式布局:Safari 上的拉伸图像
- sequelize.js - sequelize => 为什么在我包含其他关联表时不能排除返回的属性
- python - 在函数内部获取更新(Telegram bot、Python3、python-telegram-bot 库)
- c# - 循环遍历具有嵌套对象的 JSON 对象并检查布尔值 c#
- makefile - 使用 Makefile 编译文件位于源目录之外
- api - 无法在 Stripe 中获取关联帐户的卡详细信息