2016-11-24 8 views
-1

数字の1~24のリストをランダムな順序で作成しようとしていますが、なぜこれは機能しませんか?数字を繰り返さずにリストに入力するにはどうすればよいですか?

full_list = [] 

x = 0 
while x < 25 : 
    n = randint (1,24) 
    while n in full_list: 
     n = randint (1,24) 
    full_list.append(n) 
    x = x + 1 
+0

新しい番号が既にリストにあるかどうかを確認します。それがあれば破棄して、もう一度 –

+4

を選択するか、より簡単なシャッフルを使用してください - http://stackoverflow.com/questions/976882/shuffling-a-list-of-objects-in-python –

+1

「シャッフル(範囲(1,25)) ' –

答えて

7

ランダムは、このタスクのために、より理にかなってshuffle機能があります。また

ar = list(range(1,25)) 
random.shuffle(ar) 
ar 
> [20, 14, 2, 11, 15, 10, 3, 4, 16, 23, 13, 19, 5, 21, 8, 7, 17, 9, 6, 12, 22, 18, 1, 24] 

while x < 25while x < 24する必要があるため、あなたのソリューションが動作しません。 x = 24randint(1,24)はリストにない新しい番号を生成しないので)無限ループになります。

関連する問題