Pythonでリストの各要素を絶対値に変換する方法
正の数と負の数が混在した数値リスト nums があるとします。このリストを更新し、最終的なリストには各要素の絶対値だけが含まれるようにしたい場合があります。
たとえば、入力が nums = [5,-7,-6,4,6,-9,3,-6,-2] のとき、期待される出力は次のとおりです。
[5, 7, 6, 4, 6, 9, 3, 6, 2]
解決のアプローチ
この問題は、Pythonの map() 関数とリスト変換を組み合わせることで簡潔に解決できます。手順は以下のとおりです。
- 引数
xを受け取り、abs(x)を返す無名関数(ラムダ式)を定義する map()メソッドを使って、numsの各要素をその絶対値へ順番に変換する- 変換結果を
list()でリスト化して返す
実装例
以下のコードを見て、実際の動きを確認してみましょう。
def solve(nums):
return list(map(lambda x: abs(x), nums))
nums = [5, -7, -6, 4, 6, -9, 3, -6, -2]
print(solve(nums))
入力
[5, -7, -6, 4, 6, -9, 3, -6, -2]
出力
[5, 7, 6, 4, 6, 9, 3, 6, 2]
コードの解説
lambda x: abs(x) は「受け取った値の絶対値を返す」小さな無名関数です。map() はこの関数をリストの全要素に適用し、その結果をまとめたイテレータを返します。最後に list() で包むことで、扱いやすいリスト形式に変換しています。
別の書き方:リスト内包表記
同じ処理は、リスト内包表記を使うともっと直感的に書けます。
def solve(nums):
return [abs(x) for x in nums]
どちらの方法でも結果は同じですが、リスト内包表記の方がPythonらしい書き方として好まれることも多く、可読性の面で優れています。状況に応じて使い分けるとよいでしょう。
-
【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法
リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう
-
【Python入門】リスト・タプル・辞書の違いを徹底解説
Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ