Python 元组解包问题

0 投票
2 回答
630 浏览
提问于 2025-04-16 18:22
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)

解压缩的部分一直正常,直到我处理接收到的数据中的第九个变量(这个变量在一个元组里)。问题是因为我发送的是一个嵌套在另一个元组里的元组,所以在解压缩的时候,它看起来是这样的:

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

现在我的问题很简单,我该怎么正确解压缩这个呢?

2 个回答

1

我注意到在大多数情况下,位置通常是在方向之前的。但是,在最后那个元组中,你却把方向放在了位置之前:(npc2alive,Orinpc3,Posnpc3)。当你解包这个元组时,你不小心把它们的位置给调换了。

1

把左边的元组嵌套起来。

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

撰写回答