Pythonでリストの要素をK回ランダムに挿入する方法
Pythonでリストに対して指定した回数(K回)だけ要素をランダムに挿入したい場合、標準ライブラリの「random」パッケージに含まれるメソッドと、シンプルな反復処理を組み合わせることで実現できます。
サンプルコード
以下に具体的な実装例を示します。
import random
my_list = [34, 12, 21, 56, 8, 9, 0, 3, 41, 11, 90]
print("元のリスト : ")
print(my_list)
print("ソート後のリスト : ")
my_list.sort()
print(my_list)
to_add_list = ["Python", "Object", "oriented", "language", 'cool']
K = 3
print("Kの値は以下の通りです")
print(K)
for element in range(K):
index = random.randint(0, len(my_list))
my_list = my_list[:index] + [random.choice(to_add_list)] + my_list[index:]
print("結果のリスト : ")
print(my_list)
出力例
元のリスト : [34, 12, 21, 56, 8, 9, 0, 3, 41, 11, 90] ソート後のリスト : [0, 3, 8, 9, 11, 12, 21, 34, 41, 56, 90] Kの値は以下の通りです 3 結果のリスト : [0, 3, 8, 9, 11, 12, 'Python', 21, 34, 41, 56, 90, 'Object', 'oriented']
※ランダムな挿入を行っているため、実行するたびに出力結果は異なります。
処理の解説
まず、必要なパッケージ(ここでは「random」)を環境にインポートします。
整数値を格納したリストを定義し、コンソールに表示します。
「sort」メソッドを使ってリストを昇順にソートし、再度コンソールに表示します。
挿入回数を表す変数Kを定義し、その値をコンソールに表示します。
range関数を使ってK回分のループ処理を行い、「random」パッケージの「randint」メソッドで挿入位置となるインデックスをランダムに生成します。randintは範囲の両端を含むため、リストの末尾への追加も可能です。
スライシングによるリストの分割と、「random」パッケージの「choice」メソッド(追加候補リストから要素を1つランダムに選択)、さらに連結演算子「+」を組み合わせて、選択した位置に新しい要素を挿入します。
すべての挿入が完了した後のリストが、最終的な結果としてコンソールに出力されます。
ポイントまとめ
「random.randint(a, b)」はa以上b以下の整数を返すため、挿入位置として有効な範囲全体をカバーできます。
「random.choice()」を使用することで、複数の候補の中からランダムに要素を選べます。
リストの連結による挿入は新たなリストを生成する方式のため、大量データの場合は「insert」メソッドの利用も検討すると良いでしょう。
-
Pythonでリストから指定したインデックスの複数要素を削除する方法
Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day