将元组分配给两个数组字段

时间:2015-09-29 11:13:11

标签: python arrays tuples

我刚注意到python中的一个行为我不明白。
想象一下以下代码:

myArray  = [0] * 10   
myTuple = (1,1)

现在我想将我的元组中的两个值分配给数组中的两个字段。由于Python允许一次更改多个值,我尝试了

myArray[2:3] = myTuple

我对myArray的期望是

[0,0,1,1,0,0,0,0,0,0]

但实际上我得到的是

[0,0,1,1,0,0,0,0,0,0,0]

谁可以向我解释这种行为?

2 个答案:

答案 0 :(得分:5)

问题是切片[2:3]的长度为1,索引为2的元素(在Python中切片不包含stop索引,因此索引为{{{ 1}}不包括在内)。并且您试图在其中插入2个元素,因此它在索引2之后插入第二个元素,将数组的大小增加1.您需要这样做 -

3

演示 -

myArray[2:4] = myTuple

答案 1 :(得分:2)

myArray[2:3]实际上是一个包含一个元素的列表(这是列表中的第三个元素)。

你只是在那里插入2个元素,这会增加列表的大小。你可能想这样做:

myArray[2:4] = myTuple