Pythonでリストの要素をランダムにシャッフルする方法
random.shuffle()関数を使ったリストのシャッフル
Pythonの標準ライブラリにはrandomモジュールが用意されており、その中のshuffle()関数を使うと、シーケンス(リストなど)の要素をランダムな順序に入れ替えることができます。
重要なポイントとして、shuffle()は元のリストを直接(in-place)並べ替えます。戻り値はNoneであるため、シャッフル後の結果を確認するには、元のリスト変数そのものを参照します。
基本的な使い方
>>> import random >>> l1 = ['aa', 22, 'ff', 15, 90, 5.55] >>> random.shuffle(l1) >>> l1 [22, 15, 90, 5.55, 'ff', 'aa'] >>> random.shuffle(l1) >>> l1 ['aa', 'ff', 90, 22, 5.55, 15]
上記の例では、文字列や数値が混在したリストに対してshuffle()を2回実行しています。実行するたびに要素の順序がランダムに変わっていることがわかります。
注意点:元のリストが変更される
shuffle()は破壊的な操作なので、元のリストを保持しておきたい場合は、あらかじめコピーを作成してからシャッフルしましょう。
>>> import random >>> original = [1, 2, 3, 4, 5] >>> shuffled = original.copy() >>> random.shuffle(shuffled) >>> original [1, 2, 3, 4, 5] >>> shuffled [3, 1, 5, 2, 4]
補足:新しいシャッフル済みリストを作成したい場合
元のリストを変更せずに、シャッフルされた新しいリストを取得したい場合は、random.sample()を使う方法もあります。
>>> import random >>> l1 = ['aa', 22, 'ff', 15, 90, 5.55] >>> new_list = random.sample(l1, len(l1)) >>> new_list ['ff', 15, 'aa', 90, 22, 5.55] >>> l1 ['aa', 22, 'ff', 15, 90, 5.55]
このように、用途に応じてshuffle()とsample()を使い分けることで、リストの要素を柔軟にランダム化できます。
-
Pythonでリストのサイズ(要素数)を取得する方法|len関数の使い方を解説
Pythonでリストのサイズ(要素数)を調べたいときは、組み込み関数 len() を使います。これは最もシンプルで標準的な方法です。len() 関数とはPython公式ドキュメントでは、len() について次のように説明されています。「len(arg) はオブジェクトの長さ(要素の数)を返します。引数には、文字列・bytes・タプル・リスト・range などのシーケンス、あるいは辞書・セット・frozenset などのコレクションを指定できます。」len() は組み込み関数であるため、追加のインポートは不要です。また、ユーザー定義クラスが特殊メソッド __len__ を実装していれば、そのクラ
-
Pythonでディレクトリの中身を一覧表示する方法【os.listdirの使い方】
Pythonでディレクトリ内のファイルやサブディレクトリを一覧表示したい場合、標準ライブラリの os モジュールに含まれる os.listdir() 関数を使うのが最も基本的な方法です。この関数は、指定したパス内にあるすべてのファイルとディレクトリの名前をリスト形式で返します。os.listdir() の基本例使い方は非常にシンプルです。引数にディレクトリのパスを渡すだけで、その中身が一覧表示されます。>>> import os >>> os.listdir(.) [DLLs, Doc, etc, include, Lib, libs, LICENSE.tx