【Python】ラムダ式でリスト内の正の数と負の数を並べ替える方法
このチュートリアルでは、Pythonのラムダ式(無名関数)を使って、リスト内の正の数と負の数を並べ替える方法を解説します。目標は、元のリストからまず負の数をすべて取り出し、その後に正の数を続けた新しいリストを作成することです。
アルゴリズム
それでは、問題を段階的に解決していきましょう。
1. 正の数と負の数を含むリストを初期化する
2. リストを引数として受け取るラムダ式を作成する
2.1. リストを反復処理して、負の数を抽出する
2.2. 同様に、正の数(0を含む)も抽出する
2.3. 連結演算子(+)を使って両者を結合する
3. 結果として得られたリストを返すポイント: 負の数と正の数の抽出には、リスト内包表記を利用すると簡潔に書けます。
コード例
行き詰まった場合は、以下のコードを参考にしてください。
# リストの初期化 arr = [3, 4, -2, -10, 23, 20, -44, 1, -23] # ラムダ式の定義 rearrange_numbers = lambda arr: [x for x in arr if x < 0] + [x for x in arr if x >= 0] # リストの並べ替えを実行 new_arr = rearrange_numbers(arr) # 結果を出力 print(new_arr)
出力結果
上記のプログラムを実行すると、次のような出力が得られます。
[-2, -10, -44, -23, 3, 4, 23, 20, 1]
コードの解説
このラムダ式では、リスト内包表記が2つ使われています。最初の [x for x in arr if x < 0] は元のリストの順序を保ったまま負の数だけを集め、次の [x for x in arr if x >= 0] は0以上の要素を同じく元の順序で集めます。両者を + 演算子で連結することで、「負の数 → 正の数」の順に並べ替えた新しいリストが完成します。
まとめ
ラムダ関数は、プログラム内で何度も繰り返し実行される小さな処理に非常に便利です。今回のように、ワンライナーで完結する簡単な変換処理に特に適しています。このチュートリアルについてご不明な点がある場合は、ぜひコメント欄でお気軽にお尋ねください。
-
Pythonでリスト内のすべての数値を乗算するプログラムの書き方
この記事では、Pythonを使ってリスト内のすべての数値を掛け合わせる(乗算する)方法を解説します。まず、ユーザーからの入力を受け取るためのリストを3つ作成し、ここでは「走査(トラバース)」という手法を利用します。 基本的な考え方はシンプルです。積を表す変数の初期値を 1 に設定し、リストの先頭から末尾まで要素を順にたどりながら、各数値をひとつずつ積に掛けていきます。すべての要素を処理し終えた時点で、変数にはリスト全体の積が格納されています。 実行例 入力: A=[5,6,3] 出力: 90 説明: 5×6×3 アルゴリズム ステップ1: すべての数値をリスト(lst)に入力する。 ステ
-
Pythonのmap関数とラムダ式で文字を入れ替える方法
map関数とラムダ式による文字の置き換えPythonでは、ある文字 a1 を別の文字 a2 に、そして a2 を a1 に相互に入れ替えたい場面があります。例えば、次のような入力文字列があったとします。puporials toinpこの文字列に含まれる「p」と「t」を入れ替えると、最終的に次のような結果を得たいわけです。tutorials pointこのような処理を実現するには、map関数とラムダ式(lambda)を組み合わせるのが便利です。map関数とラムダ式の仕組みmap(lambda, input) 関数は、渡されたイテラブル(反復可能なオブジェクト)の各要素に対して順番にラムダ式を適用