Python 将元组分配给两个数组字段
我刚刚注意到python中有一种行为我不理解。Python 将元组分配给两个数组字段,python,arrays,tuples,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:3]的长度是1,索引2处
想象一下下面的代码:
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
问题是切片
[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
myArray[2:3]
实际上是一个包含一个元素的列表(该元素是列表中的第三个元素)
您只需在那里插入2个元素,这会增加列表的大小。您可能想做:
myArray[2:4] = myTuple
您的意思可能是:
myArray[2:4]=myTuple
。另外,您还不完全清楚您是否感到惊讶的是:1。切片分配可以更改列表的长度;或:2<代码>[2:3]仅对单个元素进行切片。不过,这两种情况在其他地方已经解释过了。您的意思可能是:myArray[2:4]=myTuple
。另外,您还不完全清楚:1。切片分配可以更改列表的长度;或:2<代码>[2:3]仅对单个元素进行切片。不过,这两种方法都已经在别处解释过了。哦,是的……当然……有时候你就是看不到自己代码中的错误。。谢谢是的…当然…有时候你就是看不到自己代码中的错误。。谢谢