我理解切片,但我不明白为什么这个打印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]
答案 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
希望它有所帮助。