Python 两个列表之间的布尔求值无效

Python 两个列表之间的布尔求值无效,python,list,boolean,Python,List,Boolean,我对这个评估有疑问,“old”,这是一个元组列表,当使用bp_列表进行评估时,它应该是假的,bp_列表是相同的元组列表,但具有较少的项。事先非常感谢你 while True: # game loop if dead_flag == True: pygame.time.wait(2000) dead_flag = False MAINSURF.fill(BLACK) thePill.drawPills(p_inventary)

我对这个评估有疑问,“old”,这是一个元组列表,当使用bp_列表进行评估时,它应该是假的,bp_列表是相同的元组列表,但具有较少的项。事先非常感谢你

while True: # game loop
    if dead_flag == True:
        pygame.time.wait(2000)
        dead_flag = False    
    MAINSURF.fill(BLACK)

    thePill.drawPills(p_inventary)
    oldpoints = points
    p_inventary, points = thePill.eatenPill(pac._x, pac._y, p_inventary)

    bigPill(*bp_list)
    #### This is the problematic part
    old = bp_list
    print ">>>", old
    bp_list = eatBig(bp_list, pac._x, pac._y)
    print "---",bp_list
    if (old != bp_list):
        print "they're different"
        print "##", old_bp_list
        print "##", bp_list
        score += 50

    if oldpoints != points:
        score = (basep - points) * 10


    """else: 
        print "old_bp_list ", old_bp_list
        print "bp_list ", bp_list    """     
    if p_inventary == []:
        break

此行不会将
old
转换为
bp\u列表的副本。在这一行之后,
old
bp_列表
都指向同一个对象,对
bp_列表
的任何修改都将显示在
old
上,实际发生了什么?你得到了什么输出?您正在调用的所有其他函数都做了什么?能否删除代码并简化功能,直到问题消失,然后仔细查看演示问题的最新版本?您是否希望
old=bp_list
old
转换为
bp_list
的副本?没有。在该行之后,
old
bp_列表
都指向同一个对象,对
bp_列表
的任何修改都将显示在
old
上。谢谢用户2357112!你完全正确。我只是将bp_列表复制到一个新的引用中(我不知道我的术语是否正确),方法是:old=bp_列表[:]和voilá。你解决了我的问题,谢谢。我怎样才能把你的回答标记为有用呢?既然这就是问题所在,我已经把这个评论变成了一个你可以接受的答案。您应该在旁边看到复选标记的轮廓。
old = bp_list