2016-05-26 5 views
1

私はリストDeckからMyHandまでのランダムなカード.appendを、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

良い答えを中心にカードを渡す; P 1 –

+0

おかげで、それあなたは素晴らしいです:) – BradTheBrutalitist

+0

'random.randrange'はどうですか? –

3

あなたがtypcallyデッキをシャッフル

Deck.shuffle() 

あなたは片端からカードを取り除くだけです

hand.append(Deck.pop()) 

あなたがカードを配りときに通常あなたがデッキ内のランダムな場所から引き出すか、またはあなたがシャッフルんとdeck.dealの非常に奇妙な実施のための

+0

これは 'random.shuffle(Deck)'です。リスト内のランダムな場所からアイテムを削除するために8つのランダムなカードが必要な場合は、デッキ全体をシャッフルするのは非効率的ですが、8回の呼び出しよりも非効率的である可能性があります。 Shame 'random'は" end to swap random choice "機能を持っていません。 –

+0

私はそれをやってみたが、私はそれを正しくやっていないことを知っている。より良い文脈に置くことができるので、私はそれを理解して自分のコードに適用することができます。 – BradTheBrutalitist

+0

カードを置いた後にデッキをシャッフルします。あなたは 'hand.append'行をこの' hand.append'行に置き換えます –

関連する問題