for循环中的Python列表-新手问题

时间:2018-11-06 14:40:22

标签: python

我将Python用于各种工作,并且发现它确实功能强大。问题是我从来没有花时间去正确地学习它,经常被卡住。我现在遇到一个困扰我的问题。

在下面的代码中,我有一个for循环。在每个循环中,我想初始化一个字节列表,追加一个新字节,然后调用一个子例程,该子例程追加另一个字节,然后重复。当循环运行时,似乎永远不会重新初始化列表,因此我不得不添加代码以删除附加的字节。

prot = {
'read_datax' : [0x03,0x06],
}

def getBlock(message):
    message.append( sum(message) )
    ser.write(message)
    length = ord( ser.read(1) )
    resp =  ser.read(length) 
    return resp[1:length-1]

cardData = []   
for block in range(0, 64, 4):   
    dataMessage = prot['read_datax'] # This does not happen second time round
    dataMessage.append(block)
    cardData.append(getBlock(dataMessage) )
    dataMessage[2:4] = [] # need to remove bytes appended - why?

如何在每个循环开始时将dataMessage设置回prot ['read_datax']?

更新:谢谢大家的回答,当然是一个新手错误。总而言之,我的代码只是创建对该列表的新引用,而没有进行复制。我需要脱掉我的C帽子!

0 个答案:

没有答案