[解決済み] random.shuffleはなぜNoneを返すのですか?
2022-08-11 05:07:11
質問
なぜ
random.shuffle
を返すのか
None
をPythonで返すか?
>>> x = ['foo','bar','black','sheep']
>>> from random import shuffle
>>> print shuffle(x)
None
の代わりにシャッフルされた値を取得するにはどうすればよいでしょうか?
None
?
どのように解決するのですか?
random.shuffle()
は
x
リスト
に変更します。
.
Python API のメソッドで、構造体をインプレースで変更するものは、一般的に
None
を返し、変更されたデータ構造ではありません。
>>> x = ['foo', 'bar', 'black', 'sheep']
>>> random.shuffle(x)
>>> x
['black', 'bar', 'sheep', 'foo']
を作りたかったら
新しい
を作りたい場合、既存のリストの順番を維持したまま、ランダムにシャッフルされたリストを作るには
random.sample()
を入力の全長で指定します。
random.sample(x, len(x))
また
sorted()
と
random.random()
をソートキーとする。
shuffled = sorted(x, key=lambda k: random.random())
と同じ処理ですが、これはソート(O(N log N)演算)を必要とし、入力の長さに応じたサンプリングはO(N)演算で済みます(これは
random.shuffle()
と同じ処理が使われ、縮小するプールからランダムな値をスワップします)。
デモです。
>>> import random
>>> x = ['foo', 'bar', 'black', 'sheep']
>>> random.sample(x, len(x))
['bar', 'sheep', 'black', 'foo']
>>> sorted(x, key=lambda k: random.random())
['sheep', 'foo', 'black', 'bar']
>>> x
['foo', 'bar', 'black', 'sheep']
関連
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] 他のPythonファイルをインポートするには?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] バブルソートの宿題
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?