JavaScriptを有効にしてください

Pythonのリスト内包表記:初心者向けガイド

 · 

リスト内包表記はコードをより簡潔に、そしてPythonらしく書くための強力なツールです。
この記事では、リスト内包表記の基本から、その使い方までを初心者にも分かりやすく解説します。

リスト内包表記とは?

リスト内包表記は、リストを生成するための短い構文です。
これを使うことで、ループや条件文を使った複雑なリストの生成を、一行のコードで簡単に記述することができます。

基本形式

リスト内包表記の基本形式は以下の通りです:

1
[ for アイテム in イテラブルオブジェクト]

オプションで、条件式を加えることもできます:

1
[ for アイテム in イテラブルオブジェクト if 条件式]

例:数値のリストを生成する

1
2
squares = [x**2 for x in range(10)]
print(squares)

このコードは、0から9までの数値の二乗からなるリストを生成します。

例:条件を満たす要素のみを含むリストを生成する

1
2
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)

このコードは、0から9までの偶数の二乗からなるリストを生成します。

リスト内包表記の利点

  • 簡潔性:複数行にわたるループや条件文を、一行で表現できます。
  • 可読性:処理が一目で理解できるようになります。
  • 効率性:リスト内包表記は通常のループよりも高速に実行されることが多いです。

応用例

文字列のリストを操作する

1
2
3
fruits = ["apple", "banana", "cherry", "kiwi"]
upper_fruits = [fruit.upper() for fruit in fruits]
print(upper_fruits)

このコードは、リスト内の全ての果物の名前を大文字に変換します。

複数のリストを組み合わせる

1
2
3
4
names = ["John", "Eric", "Michael", "Graham", "Terry"]
ages = [22, 45, 32, 55, 40]
info = [f"{name} is {age} years old." for name, age in zip(names, ages)]
print(info)

このコードは、名前と年齢のリストを組み合わせて、各人の情報を含む新しいリストを生成します。

文字列のリストから特定の文字で始まる要素を選択

1
2
3
words = ["apple", "banana", "cherry", "date", "fig", "grape"]
a_words = [word for word in words if word.startswith('a')]
print(a_words)

二次元リストをフラット化する

1
2
3
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)

0から99までの数値の中から、3で割り切れる数値のみを選択

1
2
divisible_by_three = [x for x in range(100) if x % 3 == 0]
print(divisible_by_three)

リストの要素を変換して新しいリストを作成(全ての文字列を小文字に)

1
2
3
names = ["John", "ERICA", "Alice", "Bob"]
lower_names = [name.lower() for name in names]
print(lower_names)

リストの要素から新しい辞書を作成

1
2
3
fruits = ["apple", "banana", "cherry"]
fruit_dict = {fruit: len(fruit) for fruit in fruits}
print(fruit_dict)

複数の条件を持つリスト内包表記

1
2
3
numbers = range(1, 101)
filtered_numbers = [x for x in numbers if x % 2 == 0 if x % 5 == 0]
print(filtered_numbers)

リストの要素をキーとして、その長さを値とする辞書を作成

1
2
3
words = ["hello", "world", "python", "programming"]
word_length_dict = {word: len(word) for word in words}
print(word_length_dict)

ネストされたリスト内包表記を使って、行列の転置を行う

1
2
3
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed = [[row[i] for row in matrix] for i in range(3)]
print(transposed)

注意点

リスト内包表記は非常に便利ですが、使いすぎるとコードの可読性を損なうことがあります。
特に、複雑な処理を一行で書こうとすると、理解しにくくなる可能性があります。
そのため、処理が複雑になる場合は、通常のループを使った方が良いかもしれません。

まとめ

リスト内包表記は、Pythonの強力な機能の一つで、リストを生成する際にコードを簡潔に保つのに役立ちます。
基本的な使い方をマスターすれば、Pythonプログラミングがより楽しく、効率的になるでしょう。
しかし、可読性を保つために、適切な場面で使うことが重要です。


Pythonを本格的に勉強したい方は、初心者に優しく分かりやすいPyQで学ぶのが最適です。
価格もリーズナブルなのでオススメです。



スポンサーリンク

共有

もふもふ
著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア