python - Python 的奇怪特性?
问题描述
早些年,我发现:
# Python code
x = [[0]*5]*5 # IMO, it will be a 5*5 2D-Array-Like
x[2][2] = 2
# I considered x will be
# [
# [0,0,0,0,0],
# [0,0,0,0,0],
# [0,0,2,0,0],
# [0,0,0,0,0],
# [0,0,0,0,0]]
# But x will be
# [
# [0,0,2,0,0],
# [0,0,2,0,0],
# [0,0,2,0,0],
# [0,0,2,0,0],
# [0,0,2,0,0]]
所以为什么?当然,后来我知道这是因为内部列表的引用。我不认为这是一个好主意。
但又一次:
x[:][4] = 4
海事组织再次:
x[:] 必须是 x 的自身。x[:][4] 必须是 x 的最后一个成员。所以 x 将是:
#[
# [0,0,2,0,0],
# [0,0,2,0,0],
# [0,0,2,0,0],
# [0,0,2,0,0],
# 4]
但事实并非如此,没有任何变化!
所以为什么?
而且,Python 中还有其他有线案例吗?请在下面显示。
我只是想收集在 Python 中看起来有点奇怪的东西,而不仅仅是关于这个问题的问答。
解决方案
推荐阅读
- java - 没有静态引用的 Java Runnable
- html - 如何在 Github Repository 中显示代码的渲染 HTML
- sql - T-SQL 触发器 - 审计列更改
- python-3.x - 如何使用列表动态创建 Python 类实例?
- php - 已安装 php-mysql 但未在 phpinfo 中显示
- c# - 我可以通过使用 cookie 自动重新登录到我的 SignInManager 和 UserManager (Identity) -> Asp.Net-Core Identity (Deployed live)
- shell - 为什么 curl 无法使用选项 -i 显示 http 标头
- kubernetes - 从 Kubernetes 集群中的 Worker 节点访问 Pod
- python - python webscraping:您无权访问此资源
- node.js - nodejs中不能同时导入多个tfjs模型库