首页 > 解决方案 > 为什么一个列表被清除时另一个列表被清除?

问题描述

我有 2 个全局列表:

hands={}
hand={}

然后我有里面有while循环的函数。一旦hand满了,它就会被附加到hands,之后hand应该被清除。

所以我尝试这样:

if len(hand)==2:
   hands.append(hand)
   hand.clear()

我尝试printhandswhilewhile循环运行并且没关系-它包含所有附加的具有适当内容的子列表,但是一旦循环结束-该hands列表包含其中没有任何内容的子列表。我错过了什么?

标签: pythonpython-3.xlist

解决方案


首先使用列表而不是字典。hands = [] hand = [] 然后,在手牵手时使用: hands.append(hand[:]) 这应该可以工作。( hand[:] 提供对 hand 副本的引用,因此即使您清除或换手,更改也不会出现在 hand 中。只需将 hand 附加到 hands 即可让 hands 直接访问 hand。由于列表在 python 中是可变的变化会出现在手中。)


推荐阅读