2017-11-28 20 views
3

選択したリストから複数のランダムな選択肢を生成するにはどうすればよいですか?1行のコードから複数のランダムな出力を得る方法(python)

ところで

私はコードここ

の上部にimport randomを持っていますが、私のコードです:

(R [0] = "RED"、O [0] = "ORANGE"、など)

ColourList = [R[0],O[0],Y[0],G[0],B[0],I[0],V[0]] 
ColourSeq = random.choice(ColourList) 
print(ColourSeq) 

私は私だけ私に一つの出力を与えるためにそれを求めているが、私はコードは1行だけでColourListから私の項目のうち4つを与えることができるようにしたいと思い現時点でわかっています。 出力が重複する可能性があります。

答えて

2

を使用することができます。バージョン3.6では新機能です。

ColourList = [R[0],O[0],Y[0],G[0],B[0],I[0],V[0]] 
ColourSeq = random.choices(ColourList, k=6) 
print(ColourSeq) 
+0

nice ..私は 'random.choices'について知りませんでした。私は今私の答えを削除する必要がありますね:p –

+1

作品、それは短くて使いやすいです – matt6297

1

あなたは、リストの内包表記を使用することができます。

import random 
ColourList = [R[0],O[0],Y[0],G[0],B[0],I[0],V[0]] 
new_colors = [random.choice(ColourList) for i in range(4)] 
2

あなたが重複する値を許可したい場合は、あなたがrandom.sample()を使用することはできません。あなたが別々の行にそれらの値を印刷したい場合は、リストの種々の追加なしに、

print(*ColourSeq, sep='\n') 

かとしてprint文を置き換える

ColourList = [R[0],O[0],Y[0],G[0],B[0],I[0],V[0]] 
ColourSeq = [random.choice(ColourList) for x in range(4)] 
print(ColourSeq) 

:あなたは、リストの内包表記を使用することができます長いが、より明確な

for v in ColourSeq: 
    print(v) 

あなたが同じ行に印刷されたいが、li目のものは削除、単純な

print(*ColourSeq) 
+0

回答から引用符、コンマ、角かっこを削除する方法はありますか? @RoryDaulton – matt6297

+0

@ matt6297:あなたのコメントに私の追加が質問に答えますか? –

+0

はい彼らは@RoryDaultonthx – matt6297

0

を使用し、あなたはあなたがrandom.choices代わりのrandom.choiceを使用することができ、この

size = 2 
colors = random.sample(ColourList, size) 
+0

'random.sample'サンプルを置き換えずに行います。 OPは交換でサンプリングする必要があります。 – colopop

関連する問題