列出Python中的简单切片?

时间:2016-03-04 03:07:30

标签: python list

我理解切片,但我不明白为什么这个打印3 ???

所以这是我的理解:

它说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 个答案:

答案 0 :(得分:2)

如果您在执行切片分配后打印整个x列表,我认为您不会理解正在发生的事情。它将是[0, 1, 0, 1, 2, 3, 4, 3, 4]。初始范围中的2已被整个第二范围所取代,扩展了列表以使其适合。

如果切片的步骤为1-1,则只能展开具有此类切片分配的列表。如果您指定的步长较大的列表,则您替换它的顺序必须完全相同。

答案 1 :(得分:2)

经过这次改变......

x[2:3] = range(5)

x打印... [0,1,0,1,2, 3 ,4,3,4],这样x [5]现在为3。

答案 2 :(得分: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) 它将在索引x [2:3]中插入范围(5),即[0,1,2,3,4],这意味着将替换第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
希望它有所帮助。