2017-02-16 14 views
-1
import random 
global colours 
global current 
colours = ["Red","Yellow","Blue","Green","Orange","White"] 
current = [] 

def randompicker(): 
    for i in range(4): 
     current = random.choice(colours) 
randompicker() 
print(colours) 
print(current) 

ちょっと、上記のプログラムは、colorsというリストから4つの要素をランダムにcurrentという名前の別のリストに追加することになっています。私はフォーラムを見てきましたが、このケースに固有のヘルプは見つかりません。Python、あるリストから別のリストに要素をランダムに追加/追加する方法は?

要するに、1つのリストからランダムに4つの要素を別のリストに直接追加する方法がありますか?

おかげ

答えて

1

あなたの元のコードを修正するには、

current.append(random.choice(colours)) 

代わりの

current = random.choice(colours) 

を行うまたcurrentローカル変数を作成し、グローバル変数ではなく、それを返す必要があります。同じ考え方では、グローバル変数ディレクトリで作業するのではなく、選択肢の配列をパラメータとして渡す必要があります。これらの変更の両方が、あなたの関数に大きな柔軟性を与えます。

+0

回答ありがとう、重複がなければこれを行うことができる方法はありますか? – JayHunkys

+0

@JayHunkys確かに。言い換えれば、 'current'リストをチェックして、それを追加する前に次の選択肢が既に含まれているかどうかを調べる必要があります。ソリューションを英語で説明することから始めてみてください。私はそれをコードに翻訳できるようにもう少し洗練してください。 –

+0

@ JayHunkysの代わりに、あなたのためにチェックを行う 'set'を使うことができます –

6

あなたはrandom.sampleの基本的な使い方を説明しています。

>>> colours = ["Red","Yellow","Blue","Green","Orange","White"] 
>>> random.sample(colours, 4) 
['Red', 'Blue', 'Yellow', 'Orange'] 

あなたは重複を許可したい場合は、(Pythonの3.6の新機能)の代わりにrandom.choicesを使用しています。

>>> random.choices(colours, k=4) 
['Green', 'White', 'White', 'Red'] 
関連する問題