什么是r [:] = [r,r,None] for

时间:2017-08-29 06:50:34

标签: python

我可以在下面看到一些Python代码,但我不知道它的用途/用途是什么?任何回复将不胜感激!

r = []
r[:] = [r, r, None]
>>> r
>>> [[...], [...], None]

2 个答案:

答案 0 :(得分:2)

r = []

这很容易。将r设置为新的空列表。

r[:] = [r, r, None]

[r, r, None]是一个列表,其中包含对r引用的列表的两个引用,以及None值。

r[:] =r引用的现有列表的所有元素替换为作业的右侧。

结果是r引用了包含对自身的引用的列表。

>>> r
>>> [[...], [...], None]

...符号表示Python发现了一个无限循环,而不是沿着鼠洞移动,它只是打印...

此代码的目的不明确 - 我最初的反应是#34;也许是国际混淆的Python竞赛的入口?"

答案 1 :(得分:2)

>>> r = []
>>> r[:] = [r, r, None] # You do this

您正在将r分配给r,这是一种循环链接

尝试访问第0个索引,您将看到此

>>> r[0]
[[...], [...], None]
>>> r[0][0]
[[...], [...], None]
>>> r[0][0][0]
[[...], [...], None]

证明:尝试在

上打印r和r [0]以及sooo的ID
>>> id(r[0][0][0])
4508668632
>>> id(r[0][0][0][0])
4508668632
>>> id(r[0][0][0][0][0])
4508668632