为什么我跑
>>> lista = [1,2,3,4,5]
>>> newl = [8,10]
>>> lista[1:4] = newl
[1,8,10,5]
替换值的索引介于1到3之间。当我运行时。
>>> lista[2:2] = newl
[1,2,8,10,3,4,5]
创建一个新索引来保存newl。
答案 0 :(得分:1)
切片索引是包含开头且最终排他的。
mylist[1:4]
包含索引1,2和3的元素。
来自http://docs.python.org/2/library/stdtypes.html:
从i到j的s的片被定义为具有索引k的项的序列,使得i <= k <1。学家
因此,如果您获得mylist[2:2]
,则需要检索2 <= k < 2
(无元素)的元素。
但是,list
切片语法非常巧妙,可以让您分配到该空间,并将元素插入到该位置。如果你运行
mylist[2:2] = [5,6,7]
然后你将元素插入到当前不包含元素的索引2之前的那个空格中。
答案 1 :(得分:1)
要了解切片,您需要了解这一点。
让我们说
hi = "Hello"
切片hi[1:2]
包含"e"
。它从第二个角色开始,在第三个角色之前结束。 hi[2:2]
不包含任何内容,因为它从第三个字符开始,在第三个字符之前结束。
如果您在字符之间插入内容,则会替换它。如果你这样做:
hi[1:3] = "abcd"
然后"abcd"
正在取代"el"
。这与列表相同。
答案 2 :(得分:1)
在第一种情况下,您告诉python将lista
中的3个特定元素替换为newl
中的其他2个元素。
在第二种情况下,您重新初始化lista
,然后选择替换lista[2:2]
这是一个空列表([]
),更确切地说是空列表之前列表的第3个元素(其索引为2),因此您将此空列表替换为newl
中的两个值。