Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストの指定範囲内の要素を特定の数値に一括置換する方法

リスト内の指定した範囲にある要素を、特定の数値にまとめて置き換えたい場合には、リストのスライスを利用するのが最もシンプルで効率的な方法です。ループを使って要素を1つずつ書き換える必要はなく、代入操作だけで範囲全体を置換できます。

サンプルコード

以下に、実際の動作を確認できるサンプルプログラムを示します。

my_list = [42, 42, 18, 73, 11, 28, 29, 0, 10, 16, 22, 53, 41]

print("The list is :")
print(my_list)

i, j = 4, 8
my_key = 9

my_list[i:j] = [my_key] * (j - i)

print("The result is:")
print(my_list)

実行結果

The list is :
[42, 42, 18, 73, 11, 28, 29, 0, 10, 16, 22, 53, 41]
The result is:
[42, 42, 18, 73, 9, 9, 9, 9, 10, 16, 22, 53, 41]

コードの解説

  • まず、元となるリストを定義し、コンソールに出力して初期状態を確認します。

  • 次に、置き換え対象の範囲を示す2つの整数 ij、および置き換え後の値として使う整数 my_key を定義します。

  • [my_key] * (j - i) では、キーとなる数値を「終了インデックスから開始インデックスを引いた差」の回数だけ繰り返したリストを生成します。この例では 9 を4つ持つリストが作られます。

  • 生成したリストを、スライス my_list[i:j] の位置に代入することで、インデックス4〜7の要素がすべて 9 に置き換わります。

  • 最後に、置き換え後のリストをコンソールに出力します。

ポイント

スライスへの代入では、元の範囲の長さと異なる長さのリストを代入することも可能です。つまり、j - i 以外の個数を指定すれば、リストのサイズ自体を拡張・縮小しながら置換することもできます。この柔軟性が、Pythonのスライス操作の大きな利点です。

  1. 指定した範囲内で奇数個の約数を持つ要素の個数を求めるPythonプログラム

    本記事では、以下の問題文に対する解決策について詳しく解説します。 問題文 問題 − ある範囲 [n, m] が与えられたとき、その範囲内に存在する「奇数個の約数を持つ数」の個数を求めます。 アプローチ まず押さえておきたい重要な性質として、「完全平方数だけが奇数個の約数を持つ」ということが挙げられます。これは、約数が通常ペア(d と n/d)で現れるのに対し、完全平方数の場合は平方根に相当する約数だけがペアにならず単独で存在するためです。 したがって、この問題は「指定された範囲内に含まれる完全平方数の個数を数える」ことに帰着できます。 なお、n と m はどちらも範囲に含まれるため、境界値での

  2. 指定した範囲内の乱数を生成してリストに保存するPythonプログラム

    このプログラムでは、3つのユーザー入力変数を使用します。1つ目は乱数の開始値、2つ目は終了値、3つ目は生成して表示する乱数の個数です。 Pythonには乱数を生成するための標準モジュール random が用意されています。本記事では、その中でも指定した範囲内の整数乱数を返す randint() 関数を使用します。randint() は2つの引数(開始値と終了値)を受け取り、両端の値を含む範囲からランダムな整数を1つ返します。 実行例 n :: 10 s :: 20 e :: 40 [20, 35, 32, 27, 24, 35, 28, 31, 20, 28] アルゴリズム Random