Pythonでリストの要素をランダムに選択(random.choice, random.sample)
この記事では、Pythonの`random.choice`と`random.sample`を使ってリストからランダムに要素を選択する方法を説明します。それぞれの関数の特徴と使い分けについて解説し、サンプルコードを通して理解を深めます。
目次
- random.choice: リストから1つの要素をランダムに選択
- random.sample: リストから複数の要素をランダムに選択
- random.choiceとrandom.sampleの使い分け
- サンプルコード
random.choice: リストから1つの要素をランダムに選択
`random.choice(seq)`関数は、シーケンス(リスト、タプルなど)からランダムに1つの要素を選択して返します。シーケンスが空の場合はエラーが発生します。
import random
my_list = [1, 2, 3, 4, 5]
random_element = random.choice(my_list)
print(f"選択された要素: {random_element}")
上記のコードは、`my_list`からランダムに1つの要素を選択し、`random_element`変数に格納して出力します。実行するたびに異なる要素が選択されます。
random.sample: リストから複数の要素をランダムに選択
`random.sample(population, k)`関数は、`population`から重複なく`k`個の要素をランダムに選択してリストとして返します。`k`が`population`の長さより大きい場合、エラーが発生します。
import random
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random_sample = random.sample(my_list, 3)
print(f"選択された要素: {random_sample}")
上記のコードは、`my_list`から重複なく3つの要素をランダムに選択し、`random_sample`変数に格納して出力します。実行するたびに異なる3つの要素の組み合わせが選択されます。
random.choiceとrandom.sampleの使い分け
リストから1つの要素を選択する場合は`random.choice`、複数の要素を重複なく選択する場合は`random.sample`を使用します。選択する要素数がリストの長さより大きい場合、`random.sample`はエラーを発生させますが、`random.choice`はエラーを発生させません。
- 要素を重複して選択する必要がある場合は、`random.choice`をループ内で複数回使用します。
- `random.sample`は、宝くじの抽選など、重複を許さないランダムサンプリングに適しています。
- `random.choice`は、アンケートの回答をランダムに選択するなど、1つの要素のみを選択する必要がある場合に適しています。
サンプルコード
import random
my_list = ["apple", "banana", "cherry", "date", "fig"]
# random.choiceの使用例
chosen_fruit = random.choice(my_list)
print(f"random.choice: {chosen_fruit}")
# random.sampleの使用例
chosen_fruits = random.sample(my_list, 3)
print(f"random.sample: {chosen_fruits}")
#空のリストに対するrandom.choiceとrandom.sample
#empty_list = []
#print(random.choice(empty_list)) # IndexError: Cannot choose from an empty sequence
#print(random.sample(empty_list, 1)) # ValueError: Sample larger than population or is negative
関連記事
- Pythonでリストをシャッフル(random.shuffle)
- Pythonで乱数を生成(random.random, random.randint, random.uniform, random.gauss, etc.)
- Pythonでリストを作成(list, リスト内包表記)
- Pythonでリストの要素を抽出(スライス, リスト内包表記)
- Pythonでリストの要素を検索(in演算子, index, count)
- Pythonでリストに要素を追加(append, extend, insert)
- Pythonでリストから要素を削除(remove, pop, clear)
- Pythonでリストをソート(sort, sorted)
- Pythonでリストを逆順にする(reverse, スライス[::-1])
- Pythonでリストの要素数を取得(len)