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

0xA*_*ffe 1 python arrays tuples

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

myArray  = [0] * 10   
myTuple = (1,1)
Run Code Online (Sandbox Code Playgroud)

现在我想将我的元组中的两个值分配给数组中的两个字段.由于Python允许立即更改多个值,我尝试过

myArray[2:3] = myTuple
Run Code Online (Sandbox Code Playgroud)

我对myArray的期望是

[0,0,1,1,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

但我真正得到的是

[0,0,1,1,0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

谁能向我解释这种行为?

Ana*_*mar 5

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

myArray[2:4] = myTuple
Run Code Online (Sandbox Code Playgroud)

演示 -

>>> myArray  = [0] * 10
>>> myTuple = (1,1)
>>> myArray[2:3] = myTuple
>>> len(myArray)
11
>>> myArray  = [0] * 10
>>> myTuple = (1,1)
>>> myArray[2:4] = myTuple
>>> len(myArray)
10
Run Code Online (Sandbox Code Playgroud)