Python元组解压问题

时间:2011-05-26 05:59:44

标签: python iterable-unpacking

sendnpc = (npc2alive,Orinpc3,Posnpc3)   
Data = dumps((PosYou,OriYou,Shoot,txtt,Posnpc,Orinpc,npcalive,Posnpc2,Orinpc2,sendnpc))

我将这些材料发送到另一台计算机,问题出在我打开包装的时候。

脚本的解包部分如下所示:

Data, SRIP = GameLogic.sClient.recvfrom(1024)
UPData = loads(Data)
PosServer = [UPData[0][0],UPData[0][1],UPData[0][2]]
OriServer = [UPData[1][0],UPData[1][1],UPData[1][2]]
Server.setPosition(PosServer)
Server.setOrientation(OriServer)
Server.KeySens = UPData[2]
Pump1Shoot = UPData[2]
txt1.Text = UPData[3]
text = text + UPData[3]
Posnpc = [UPData[4][0],UPData[4][1],UPData[4][2]]
Orinpc = [UPData[5][0],UPData[5][1],UPData[5][2]]
npc.setPosition(Posnpc)
npc.setOrientation(Orinpc)
npcalives = UPData[6]
Posnpc2 = [UPData[7][0],UPData[7][1],UPData[7][2]]
Orinpc2 = [UPData[8][0],UPData[8][1],UPData[8][2]]
npc2.setPosition(Posnpc2)
npc2.setOrientation(Orinpc2)
npc2alives = UPData[9][0]
Posnpc3 = [UPData[9][1][0],UPData[9][1][1],UPData[9][1][2]]
Orinpc3 = [UPData[9][2][0],UPData[9][2][1],UPData[9][2][2]]
npc3.setPosition(Posnpc3)
npc3.setOrientation(Orinpc3)

解包部分一直有效,直到我从被回收数据(即元组内部)中获取第9个变量。问题是因为我发送了一个嵌套在另一个元组中的元组,当我打开包装时它看起来像这样:

PosYou,OriYou,Shoot,txtt,Posnpc,Orinpc,npcalive,Posnpc2,Orinpc2(npc2alive,Orinpc3,Posnpc3)

现在我的问题很简单,我怎样才能正确解开?

2 个答案:

答案 0 :(得分:1)

嵌套LHS元组。

>>> a, b, (c, d, e) = [1, 2, [3, 4, 5]]
>>> a
1
>>> b
2
>>> c
3
>>> d
4
>>> e
5

答案 1 :(得分:1)

我注意到在大多数情况下,位置出现在方向之前。但是,在最后一个元组中,你有位置前的方向:(npc2alive,Orinpc3,Posnpc3)。当你打开它时,你无意中交换了两个。

相关问题