python - 为什么一个列表被清除时另一个列表被清除?
问题描述
我有 2 个全局列表:
hands={}
hand={}
然后我有里面有while
循环的函数。一旦hand
满了,它就会被附加到hands
,之后hand
应该被清除。
所以我尝试这样:
if len(hand)==2:
hands.append(hand)
hand.clear()
我尝试print
了hands
whilewhile
循环运行并且没关系-它包含所有附加的具有适当内容的子列表,但是一旦循环结束-该hands
列表包含其中没有任何内容的子列表。我错过了什么?
解决方案
首先使用列表而不是字典。hands = [] hand = [] 然后,在手牵手时使用: hands.append(hand[:]) 这应该可以工作。( hand[:] 提供对 hand 副本的引用,因此即使您清除或换手,更改也不会出现在 hand 中。只需将 hand 附加到 hands 即可让 hands 直接访问 hand。由于列表在 python 中是可变的变化会出现在手中。)
推荐阅读
- python - Python 3.7.3 错误:ModuleNotFoundError:没有名为“Pages”的模块
- amazon-web-services - Terraform 模块和提供程序
- c# - 将 BigInteger 除以常数的更快方法
- javascript - 忽略长 js 测试描述的模式
- database - mongod:无法取消链接套接字文件
- apache-kafka - 如何设计实时股价的发布/订阅架构
- python-3.x - 数据框:基于上方单元格和左侧单元格的计算行
- html - 如何在服务仍在获取响应时显示进度条
- python - 使用烧瓶无法在网站上看到任何消息
- jquery - 有没有办法用 jquery 或 js 在动态列表项中显示 div