Skip to main content
 首页 » 编程设计

python之在 Python 中的列表之间移动项目

2025年05月04日13shihaiming

所以我最近开始认真地使用 Automate the Boring the Stuff 进行编程,在阅读了有关基本语法的章节后,我决定开始制作 Blackjack 游戏。但是,我在发牌时遇到了问题。我有主甲板

deck=[2,3,4,5,6,7,8,9,'J','Q','K','A']*4 

并有一个单独的空列表,名为 playerHand 。我知道我可以使用 .append 和 random.choice 随机选择一张卡片并将其添加到 playerHand[] ,但这不会从 deck[] 中删除卡片。

我能想到的唯一方法是随机生成一个介于 1 和牌组中剩余卡片数量之间的数字,将一个变量设置为该数字,将另一个变量设置为该索引处的卡片,将该卡片添加到 playerHand[] ,然后最后删除 deck[] 中该索引处的卡。

有没有不涉及 2 个临时变量的方法?

请您参考如下方法:

是的,使用 list.pop。

list.pop 将删除给定索引处的值并将其返回:

In [105]: l = [1, 2, 3, 4] 
 
In [106]: l.pop(2)  # here 2 is the index, at index 2 we have value 3 
Out[106]: 3 
 
In [107]: l 
Out[107]: [1, 2, 4] 

请注意,默认情况下,pop 将pop 最后一个索引 (l[-1]) 处的值。


因此,在您的情况下,您可以对列表进行 random.shuffle 操作并pop:

In [108]: deck=[2,3,4,5,6,7,8,9,'J','Q','K','A']*4 
 
In [109]: random.shuffle(deck) 
 
In [110]: deck.pop() 
Out[110]: 7