>>> c=[1,2,3]
>>> c[1]=c
>>> d=[1,2,3]
>>> d[1:]=d
>>> print(c)
[1, [...], 3] # Why does C become [1, [...], 3]?
>>> print(d)
[1, 1, 2, 3] # Why is d not [1, [...] ]?
请问,代码哪里不一样?是:
,还是别的什么?
>>> c=[1,2,3]
>>> c[1]=c
>>> d=[1,2,3]
>>> d[1:]=d
>>> print(c)
[1, [...], 3] # Why does C become [1, [...], 3]?
>>> print(d)
[1, 1, 2, 3] # Why is d not [1, [...] ]?
请问,代码哪里不一样?是:
,还是别的什么?
您正在使用索引和切片分配,它们完全不同。
将此与在表达式中对列表进行索引和切片进行比较:
>>> c=[1,2,3]
>>> c[1]
2
>>> d=[1,2,3]
>>> d[1:]
[2, 3]
通过在列表索引中使用:
冒号,您要求的是一个切片,它始终是另一个列表。
在 Python 中,您可以为列表中的单个项目和列表的一部分分配值。
slicing
用于提取sublist
列表中的 a,其中 asindexing
用于检索列表的特定元素
slicedList = aList[beginIndex:endIndex]
d[1:]
指对列表进行切片d
- 参考this。- 这是切片
c[1]
是列表的一个元素c
。- 这是索引
print(c) [1, [...], 3] # 为什么C变成了[1, [...], 3]?
当您执行 c 1 = c 时,您将 c 本身分配给 c 的第二个位置。这样您就可以创建循环引用。因此,解释器不会再次显示列表,而是显示 [...] 以指示其循环引用。看到这个了解更多信息