2016-05-26 65 views
1

我想.append从列表DeckMyHand随机卡,而从Deck删除它。Python 3:如何将列表x中的项目移动到列表y并从列表x中移除它?

import random 

Deck = [] 
MyHand = [] 
CardsPicked = 0 

for Cards in range(1, 101): 
    Deck.append(Cards) 

while(CardsPicked < 8): 
    MyHand.append(random.choice(Deck)) 
    CardsPicked = CardsPicked + 1 

要知道的事情:我已经能够添加卡,但不能删除它。

我试图做Deck.remove(random.choice),但它表示,选择不在甲板上。

回答

5
MyHand.append(Deck.pop(random.choice(range(len(Deck))))) 

pop需要一个索引中删除,并返回删除的项目)更接近你的代码

的东西是:

card = random.choice(Deck) 
Deck.remove(card) 
MyHand.append(card) 
+0

好回答的卡很奇怪实现deck.deal的; P + 1 –

+0

感谢它工作你真棒:) – BradTheBrutalitist

+0

'random.randrange'怎么样? –

3

你typcally洗牌

Deck.shuffle() 

然后你只是从一端删除卡片

hand.append(Deck.pop()) 

通常当你处理卡你从甲板上随机地画还是你洗牌和绕过

+0

它是'random.shuffle(Deck)'。如果你只需要8张随机卡,洗牌整个套牌的效率会很低,但很可能少于8次,而不是从列表中的随机地方移除一个项目,这是明显的选择。耻辱'随机'没有“交换随机选择到最后”功能。 –

+0

我试过这样做,但我知道我做得不对。你能否把它放在更好的上下文中,以便我能理解并将其应用于我的代码。 – BradTheBrutalitist

+0

当你将卡片放入卡片后,你可以“洗牌”了......用这个'hand.append'行代替你的'hand.append'行 –

相关问题