Pythonでリストをランダムに並べ替えるrandom.shuffleの使い方と応用例

この記事では、Pythonでリストの要素をランダムに並べ替える方法について詳しく解説します。Pythonの標準ライブラリである`random`モジュールの`shuffle`関数を使って、この処理を実現する具体的なコード例とその解説、さらに応用例を3つ紹介します。

目次

random.shuffle関数とは

`random.shuffle`関数は、Pythonの標準ライブラリである`random`モジュールに含まれています。この関数を使うと、リストの要素をランダムに並べ替えることができます。

import random

my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)

print(my_list)  # 出力例: [3, 1, 4, 5, 2]

このコードは、`my_list`というリストの要素をランダムに並べ替えています。`random.shuffle`関数は破壊的なメソッドであり、元のリストを変更します。

基本的な使い方

`random.shuffle`関数の基本的な使い方を見てみましょう。

単純なリストのシャッフル

import random

# シャッフルするリスト
numbers = [1, 2, 3, 4, 5]

# シャッフル実行
random.shuffle(numbers)

print(numbers)  # 出力はランダム

上記のコードでは、`numbers`という名前のリストをランダムに並べ替えています。`random.shuffle`は元のリスト自体を変更するため、新しいリストを返さない点に注意が必要です。

応用例

文字列のシャッフル

Pythonの文字列は不変(immutable)なオブジェクトですが、一度リストに変換してから`random.shuffle`を適用することで、文字列のシャッフルが可能です。

# 文字列のシャッフル
text = "hello"
text_list = list(text)
random.shuffle(text_list)
shuffled_text = ''.join(text_list)

print(shuffled_text)  # 出力はランダム

リスト内のサブリストをシャッフル

リスト内にサブリストが含まれている場合でも、`random.shuffle`は問題なく動作します。ただし、サブリスト自体はシャッフルされません。

# リスト内のサブリストをシャッフル
list_with_sublists = [[1, 2], [3, 4], [5, 6]]
random.shuffle(list_with_sublists)

print(list_with_sublists)  # 出力はランダム

シャッフルした結果を別のリストに保存

`random.shuffle`は破壊的な操作ですが、`copy`モジュールを用いて元のリストを複製した上でシャッフルすることもできます。

import copy

original_list = [1, 2, 3, 4, 5]
shuffled_list = copy.deepcopy(original_list)

random.shuffle(shuffled_list)

print("Original:", original_list)
print("Shuffled:", shuffled_list)

まとめ

`random.shuffle`関数を使うと、Pythonで簡単にリストの要素をランダムに並べ替えることができます。ただし、この関数は元のリストを破壊的に変更するため、その点に注意が必要です。応用例として、文字列のシャッフルやリスト内のサブリストをシャッフルする方法、さらには元のリストを保持したまま新しいリストにシャッフル結果を保存する方法も紹介しました。

コメント

コメントする

目次