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, [...] ]?

请问,代码哪里不一样?是:,还是别的什么?

4

3 回答 3

10

您正在使用索引和切片分配,它们完全不同。

将此与在表达式中对列表进行索引和切片进行比较:

>>> c=[1,2,3]
>>> c[1]
2
>>> d=[1,2,3]
>>> d[1:]
[2, 3]

通过在列表索引中使用:冒号,您要求的是一个切片,它始终是另一个列表。

在 Python 中,您可以为列表中的单个项目和列表的一部分分配值。

于 2012-10-05T11:37:32.227 回答
3

slicing用于提取sublist列表中的 a,其中 asindexing用于检索列表的特定元素

slicedList = aList[beginIndex:endIndex]

d[1:]指对列表进行切片d- 参考this。- 这是切片

c[1]是列表的一个元素c。- 这是索引

于 2012-10-05T11:37:51.347 回答
1

print(c) [1, [...], 3] # 为什么C变成了[1, [...], 3]?

当您执行 c 1 = c 时,您将 c 本身分配给 c 的第二个位置。这样您就可以创建循环引用。因此,解释器不会再次显示列表,而是显示 [...] 以指示其循环引用。看到这个了解更多信息

于 2012-10-05T11:50:06.923 回答