2017-03-08 3 views
0

文字列の順序のリストをシャッフルする方法は?私は私のリスト内の文字列の場所をシャッフルしたい

words = ['red', 'adventure', 'cat', 'cat'] 

期待される結果:

words = ['cat', 'adventure', 'red', 'cat'] #changes everytime it's called 

は私がランダムライブラリーからシャッフルしてみましたが、それは私にNoneエラーになります。 (あなたがNoneを得るため、なぜ)random.shuffle場所でシャッフルとは何も返さないため

from random import shuffle 
words = ['red', 'adventure', 'cat', 'cat'] 
newwords = shuffle(words) 
print(newwords) 
+2

「私はランダムライブラリーからシャッフルしてみましたが、それ私にNoneエラーを与えます。 "あなたが実際にしたことを私たちに示す必要があります。 – Denziloe

+4

'None'はエラーではありません。 'random.shuffle()'はリストの位置をシャッフルし、 'None'を返します。シャッフルした後、 'words'の内容を確認してください。 – glibdud

+1

[なぜrandom.shuffleが返されないのですか?](http://stackoverflow.com/questions/17649875/why-does-random-shuffle-return-none) –

答えて

12

にです:

EDIT

は申し訳ありませんが、私は私が試したかを示すのを忘れていました。

import random 

words = ['red', 'adventure', 'cat', 'cat'] 
random.shuffle(words) 

print(words) # prints ['cat', 'cat', 'red', 'adventure'] 

編集:あなたの編集を考える

は、何を変更する必要がある:

from random import shuffle 

words = ['red', 'adventure', 'cat', 'cat'] 
newwords = words[:] # Copy words 
shuffle(words) # Shuffle newwords 

print(newwords) # prints ['cat', 'cat', 'red', 'adventure'] 

または

from random import shuffle 

words = ['red', 'adventure', 'cat', 'cat'] 
newwords = random.sample(words, len(words)) # Copy and shuffle 

print(newwords) # prints ['cat', 'cat', 'red', 'adventure'] 
+0

これはまさに私が試みたものでしたが、 None – Lindow

+1

@Lindow 'words = random.shuffle(words)'や 'print(random.shuffle(words))'のように、 'None'を表示する理由があります。 – Vallentin

+0

'new_words = random.shuffle(words)'新しい変数でリストを割り当てることはできませんか? – Lindow

関連する問題