2016-03-04 61 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 

希望它帮助。