首页 > 解决方案 > 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 中看起来有点奇怪的东西,而不仅仅是关于这个问题的问答。

标签: python

解决方案


推荐阅读