我无法弄清楚这里发生了什么.附加range函数的引用就是在索引处创建递归列表3.
>>> x = range(3)
[0, 1, 2]
>>> x.append(x)
[0, 1, 2, [...]]
>>> x[3][3][3][3][0] = 5
[5, 1, 2, [...]]
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试这个:
>>> x = range(3)
[0, 1, 2]
>>> x.append(range(3))
[0, 1, 2, [0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
我可以很容易地推断出第二种情况的原因,但是无法理解range函数的附加引用对附加的列表做了什么.
在python2中,ranges是lists.
lists,python中的大多数东西都是具有身份的对象.
li = [0,1]
li[1] = li # [0, [...]]
# ^----v
id(li) # 2146307756
id(li[1]) # 2146307756
Run Code Online (Sandbox Code Playgroud)
既然你把里面的名单本身,你要创建一个递归的数据结构.
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |