【发布时间】:2019-09-28 18:21:18
【问题描述】:
我正在尝试构建一个纸牌游戏手模拟器。 我希望能够洗牌一张卡片列表(我假设是随机导入),然后从牌堆顶部移除卡片并将它们放入我的手中。我想画多久就画多久。
问题是,当我使用 .pop() 执行此操作时,它会从随机列表中删除几行元素,但最终会停止,然后只在列表中留下 2 个项目。当我查看文档时,它说 .pop() 默认情况下会删除位置 0 处的项目,所以我不知道为什么它不继续。
现在我正在尝试使用 .pop() 方法。我是python新手,所以可能有更好的方法,我只是不知道是否有更好的方法。无论如何,我试图理解为什么 .pop() 没有解决这个问题并且文档并没有完全帮助。
'''the for-loop is supposed to shuffle my cards, and then keep plucking one off of the top until there are no more cards in the deck'''
import random
hand = [1,2,3,4,5]
random.shuffle(hand)
for i in hand:
card = hand.pop(0)
print(card)
print(hand)
我实际得到的: 1 [4、5、3、2] 4 [5, 3, 2] 5 [3, 2]
我想得到什么: 1 [4、5、3、2] 4 [5, 3, 2] 5 [3, 2] 3 [2] 2 []
【问题讨论】:
-
没错。使用
for i in list(hand): -
您正在更改您正在迭代的列表。 ...