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

Python – リストの要素を隣接要素の大きい方で置き換える方法

Pythonでリスト内の各要素を、その左右に隣接する要素のうち大きい方の値で置き換えたい場合があります。このような処理は、シンプルなループ(反復処理)と if / else 条件を組み合わせることで簡単に実装できます。

サンプルコード

以下に具体的な実装例を示します。

my_list = [41, 25, 24, 45, 86, 37, 18, 99]

print("元のリスト:")
print(my_list)

for index in range(1, len(my_list) - 1):

   my_list[index] = my_list[index - 1] if my_list[index - 1] > my_list[index + 1] else my_list[index + 1]

print("処理後のリスト:")
print(my_list)

実行結果

元のリスト:
[41, 25, 24, 45, 86, 37, 18, 99]
処理後のリスト:
[41, 41, 45, 86, 86, 86, 99, 99]

処理の流れと解説

  • まず、整数値を含むリストを定義し、コンソールに表示して初期状態を確認します。

  • range(1, len(my_list) - 1) を使って、リストの先頭と末尾を除いた範囲を反復処理します。これにより、常に左右両方の隣接要素が存在するインデックスのみが対象になります。

  • 各インデックスにおいて、左隣の要素(index - 1)と右隣の要素(index + 1)を比較し、大きい方の値で現在の要素を上書きします。これは三項演算子(条件式)を使って簡潔に記述されています。

  • すべての置き換えが完了した後、最終的なリストをコンソールに出力します。

ポイント

このアルゴリズムでは、リストの最初の要素と最後の要素は変更されない点に注意してください。これらは隣接要素が片方しか存在しないためです。また、処理はリストを一度走査するだけで完了するため、計算量は O(n) となり、大きなリストでも効率的に動作します。

  1. Pythonで別のリストのインデックスを指定してリストから要素を削除する方法

    Pythonでインデックスリストに基づいてリストの要素を削除する方法ここでは2つのリストを扱います。L1は要素を削除する対象となるリストオブジェクト、L2は削除したい要素のインデックスを格納したリストです。>>> L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]>>> L2 = [2, 4, 6]L2で指定されたインデックスにある要素をL1から取り除くには、まずL1からenumerateオブジェクトを作成します。enumerate()関数は、リスト内の各要素とそのインデックスをペアにしたタプルのコレクション(enumerateオブジェクト)を

  2. Pythonでインデックスを指定してリストから要素を削除する方法

    Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は