>>> 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, [...] ]?
不好意思,代码在哪里不同?它是:
还是别的什么?
答案 0 :(得分:10)
您使用的索引和切片分配完全不同。
将此与表达式中的列表的索引和切片进行比较:
>>> c=[1,2,3]
>>> c[1]
2
>>> d=[1,2,3]
>>> d[1:]
[2, 3]
通过在列表索引中使用:
冒号,您需要一个切片,它始终是另一个列表。
在Python中,您可以为列表中的单个项目和列表的切片分配值。
答案 1 :(得分:3)
slicing
用于提取列表的sublist
,其中indexing
用于检索列表的特定元素
slicedList = aList[beginIndex:endIndex]
d[1:]
指的是对列表d
进行切片 - 请参阅this。 - 这是切片
c[1]
是列表c
的元素。 - 这是索引
答案 2 :(得分:1)
print(c)[1,[...],3]#为什么C变为[1,[...],3]?
当您执行c 1 = c时,您将c本身分配给c的第二个位置。这样您就可以创建循环引用。因此,不再显示列表,解释器显示[...]以指示其循环引用。 See this for more info