2016-03-04 44 views
1

我明白切片,但我不明白爲什麼這個打印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] 
+0

在範圍分配後添加一個'print x' – JGreenwell

回答

2

我想你會已瞭解了是怎麼回事,如果你做切片分配後打印整個x列表。它將是[0, 1, 0, 1, 2, 3, 4, 3, 4]。來自初始範圍的2已被整個第二範圍所取代,從而擴大了列表的範圍,使其適合。

如果切片的步長爲1-1,則只能擴展帶有此類切片分配的列表。如果分配給步長較大的列表,則要替換的序列必須具有完全相同的大小。

2

此更改後...

x[2:3] = range(5) 

X打印... [0,1,0,1,2,3 ,4,3,4],使得x [5 ]現在是3。

2

在地區蔓延這個你在做什麼:

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 

希望它幫助。