はじめに
Python では、リストは項目の順序付きコレクションです。時々、リスト内の項目の順序をランダムにする必要がある場合があります。これは、ゲームやシミュレーション、またはランダム性の要素を導入したい他の状況に役立ちます。このチャレンジでは、リスト内の項目をシャッフルする関数を書きます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Python では、リストは項目の順序付きコレクションです。時々、リスト内の項目の順序をランダムにする必要がある場合があります。これは、ゲームやシミュレーション、またはランダム性の要素を導入したい他の状況に役立ちます。このチャレンジでは、リスト内の項目をシャッフルする関数を書きます。
入力としてリストを受け取り、同じ項目をランダムな順序で含む新しいリストを返す関数 shuffle(lst)
を書きます。関数は、Fisher-Yates アルゴリズムを使用してリスト内の項目をシャッフルする必要があります。
Fisher-Yates アルゴリズムは以下のように機能します。
関数は元のリストを変更してはいけません。代わりに、シャッフルされた項目を含む新しいリストを作成する必要があります。
入力リストには少なくとも 1 つの項目が含まれていると仮定して構いません。
from copy import deepcopy
from random import randint
def shuffle(lst):
temp_lst = deepcopy(lst)
m = len(temp_lst)
while (m):
m -= 1
i = randint(0, m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst
foo = [1, 2, 3]
shuffle(foo) ## [2, 3, 1], foo = [1, 2, 3]
このチャレンジでは、Fisher-Yates アルゴリズムを使用してリスト内の項目をシャッフルする関数を書きました。このアルゴリズムは、リスト内の項目の順序をランダムにするための簡単で効率的な方法です。このチャレンジを完了することで、Python におけるリストの仕組みと関数を使ってそれを操作する方法について、より深い理解を得ることができました。