ホームページ >バックエンド開発 >Python チュートリアル >Python の「random.shuffle」が「None」を返すのはなぜですか?

Python の「random.shuffle」が「None」を返すのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 09:20:07182ブラウズ

Why Does Python's `random.shuffle` Return `None`?

Python のランダム シャッフル: 見かけ上の戻り値が返されない理由?

Python のrandom.shuffle 関数を使用する場合、それを見て当惑するかもしれません。なしを返します。この動作は、そのインプレースの性質に由来します。

変更後に変換されたデータ構造を返す関数とは異なり、random.shuffle は入力リストを直接変更します。したがって、明示的な値が返されていないことを示すために None が返されます。

例として、次のコードを考えてみます。

x = ['foo', 'bar', 'black', 'sheep']
random.shuffle(x)
print(x)

このコードを実行すると、リスト x はシャッフルされます。 -place ですが、random.shuffle 関数自体は値を返しません。その結果、print ステートメントはシャッフルされたリストを出力します。

元のリストを変更せずに新しいシャッフルされたリストが必要な場合は、別の方法を利用できます。

  • random.sample(x, len(x)): 元のリストから値をサンプリングして、ランダムにシャッフルされた新しいリストを作成しますlist.
  • shuffled =sorted(x, key=lambda k:random.random()): ランダム化されたキーによる並べ替えを使用して、新しいシャッフルされたリストを生成します。

random.sample の複雑さは O(N) ですが、sorted の複雑さは基礎的な理由により O(N log N) であることを理解してください。

random.shuffle のインプレース動作を理解し、必要に応じて代替メソッドを利用することで、Python でのリスト シャッフル操作の処理方法を効果的に制御できます。

以上がPython の「random.shuffle」が「None」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。