将元组分配给两个数组字段
Assigning a tuple to two array fields
我刚刚注意到 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:3]
的长度为 1,索引 2
处的元素(Python 中的切片不包括 stop
索引,因此不包括索引 3
处的元素)。你试图在其中插入 2 个元素,因此它在索引 2 之后插入第二个元素,将数组的大小增加 1。你需要做 -
myArray[2:4] = myTuple
演示 -
>>> 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
myArray[2:3]
实际上是一个包含一个元素的列表(即列表中的第三个元素)。
您只是在其中插入 2 个元素,这会增加列表的大小。你可能想做:
myArray[2:4] = myTuple
我刚刚注意到 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:3]
的长度为 1,索引 2
处的元素(Python 中的切片不包括 stop
索引,因此不包括索引 3
处的元素)。你试图在其中插入 2 个元素,因此它在索引 2 之后插入第二个元素,将数组的大小增加 1。你需要做 -
myArray[2:4] = myTuple
演示 -
>>> 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
myArray[2:3]
实际上是一个包含一个元素的列表(即列表中的第三个元素)。
您只是在其中插入 2 个元素,这会增加列表的大小。你可能想做:
myArray[2:4] = myTuple