-1

我想等于 a[0]=recv_pak[0], a[1]=recv_pac[1]... 直到 a[4]。recv_pack 列表有 20 个参数,但我只想选择前 4 个参数。我正在使用此代码行,但我有IndexError: list assignment index out of range

错误我该如何解决?

while 1:
   # sock.send(req)
    #print("TX: (%s)" % repr(req))
    rec = sock.recv(BUFFER_SIZE)
    print("RX: (%s)" % repr(rec))
    time.sleep(2)
    break



 print("\nSwitching Plug OFF...")

    recv_pack=struct.unpack('12B',rec)
    print(recv_pack)

    a=[]
    for i in range(0,4):
        a[i]=recv_pack[i]
        print(a[i])
4

3 回答 3

2

利用list.append

前任:

a=[]
for i in range(0,4):
    a.append(recv_pack[i])
    print(a[i])

您也可以使用列表slicing

前任:

a = recv_pack[:4]
print(a)
于 2018-10-30T06:41:36.860 回答
0

现在对于简单的pythonic版本:

a = recv_pack[:4]

这意味着:“给我一个列表中的前四个项目recv_pack并将其绑定到名称'a'”

于 2018-10-30T08:20:21.963 回答
0

'a' 是一个空列表,但您尝试在第一次迭代中写入元素 [0],但该元素尚不存在。

请尝试以下操作,将新元素添加到列表末尾:

for i in range(0,4): a.append(recv_pack[i]) print(a[i])

于 2018-10-30T06:43:55.357 回答