我明白切片,但我不明白爲什麼這個打印3?在Python中列出簡單的切片?
所以這裏是我的理解:
它說,X = [0,1,2,3,4]然後
指數2比2將被[0,1,2,3代替4]
因此X [5]不在範圍內
x = range(5)
x[2:3] = range(5)
print x[5]
我明白切片,但我不明白爲什麼這個打印3?在Python中列出簡單的切片?
所以這裏是我的理解:
它說,X = [0,1,2,3,4]然後
指數2比2將被[0,1,2,3代替4]
因此X [5]不在範圍內
x = range(5)
x[2:3] = range(5)
print x[5]
我想你會已瞭解了是怎麼回事,如果你做切片分配後打印整個x
列表。它將是[0, 1, 0, 1, 2, 3, 4, 3, 4]
。來自初始範圍的2
已被整個第二範圍所取代,從而擴大了列表的範圍,使其適合。
如果切片的步長爲1
或-1
,則只能擴展帶有此類切片分配的列表。如果分配給步長較大的列表,則要替換的序列必須具有完全相同的大小。
此更改後...
x[2:3] = range(5)
X打印... [0,1,0,1,2,3 ,4,3,4],使得x [5 ]現在是3。
在地區蔓延這個你在做什麼:
x = range(5)
print x
[0, 1, 2, 3, 4]
x[2:3] = range(5)
在這裏,你在做什麼,你想要索引值x [2:3]是範圍(5), 現在,如果你打印X [2:3],它會返回你[2]在列表
Print x[2:3]
[2]
所以現在在初始化X [2:3] =範圍(5) ,它將插入範圍(5),它是[ 0,1,2,3,4]在索引x [2:3]中表示將替換項目2的值。
在此之後,如果你打印X
x[2:3] = range(5)
print x
[0, 1, 0, 1, 2, 3, 4, 3, 4]
現在,如果你打印X [5]它將返回3上5指數值爲3
x[0] = 0
x[1] = 1
x[2] = 0
x[3] = 1
x[4] = 2
x[5] = 3
x[6] = 4
x[7] = 3
x[8] = 4
希望它幫助。
在範圍分配後添加一個'print x' – JGreenwell