Pythonでリストから要素をランダムに選択する方法【choice()とrandrange()の使い方】
Pythonでリストからランダムに要素を選ぶ基本
Pythonの標準ライブラリにはrandomモジュールが用意されており、これを使うことでシンプルなコードでリストから要素をランダムに取得できます。randomモジュールは、メルセンヌ・ツイスターアルゴリズムに基づくさまざまな擬似乱数生成機能を提供しています。
本記事では、代表的な2つの方法——choice()関数とrandrange()関数を使った手法を紹介します。
方法1:choice()関数を使う(最も簡単)
randomモジュールにはchoice()メソッドがあり、文字列・リスト・タプルなどのシーケンス型データから1つの要素をランダムに選択できます。コードは非常に簡潔です。
>>> from random import choice >>> lst = [1, 2, 3, 4, 5] >>> choice(lst) 4 >>> choice(lst) 5 >>> choice(lst) 3
呼び出すたびに異なる要素が返されることがわかります。実行するたびに結果は変わるため、くじ引きやシャッフル処理などに便利です。
方法2:randrange()関数でインデックスを生成する
もうひとつの方法として、randrange()関数を使ってリストのインデックスに対応する乱数を生成し、そのインデックスで要素にアクセスするやり方があります。乱数の範囲は「0 ~ len(lst) - 1」です。
>>> from random import randrange >>> lst = [1, 2, 3, 4, 5] >>> index = randrange(len(lst)) >>> lst[index] 4 >>> index = randrange(len(lst)) >>> lst[index] 3
この方法は、インデックス自体も利用したい場合や、範囲指定を細かく制御したい場合に有効です。
補足:複数の要素を重複なく選びたい場合
複数の要素を一度にランダムに抽出したい場合は、random.sample()を使うと重複なしで指定個数の要素を取得できます。
>>> import random >>> lst = [1, 2, 3, 4, 5] >>> random.sample(lst, 3) [2, 5, 1]
まとめ
- 1つだけランダムに選ぶなら random.choice() が最も簡単
- インデックスを活用したいなら random.randrange()
- 複数要素を重複なく選ぶなら random.sample()
用途に応じてこれらの関数を使い分けることで、Pythonでのランダム選択処理を効率的に実装できます。
-
Pythonでリストから文字列を作成する方法|join()関数の使い方を解説
Pythonのjoin()関数とはPythonには、シーケンス型(リストやタプルなど)の要素を連結して1つの文字列を生成するための組み込みメソッド join() が用意されています。join()は区切り文字(セパレーター)を持つ文字列に対して呼び出し、各要素の間にその区切り文字を挿入しながら要素を連結します。区切り文字が不要な場合は、空文字列()を使って呼び出すことで、要素をそのまま連結した文字列を取得できます。区切り文字なしで連結する例以下の例では、文字1つずつを格納したリストを、空文字列を介して連結しています。>>> lst = [h, e, l, l, o]>&g
-
【Python入門】関数からリストを返す基本的な方法とサンプルコード
Pythonでは、関数からリストを返す方法がいくつかあります。最も基本的なのは、関数内でリストを作成し、return文でそのリストを返すという方法です。 基本例:forループでリストを生成して返す 以下の例では、0から9までの数値を順番にリストへ追加し、完成したリストを返す関数 retList() を定義しています。 def retList(): result = [] for i in range(0, 10): result.append(i) return result a = retList() print(a) 実行結果 [0, 1,