0Pricing
Python Academy · レッスン

リスト内包表記

条件付きの内包表記構文でリストを簡潔に作成します。

「リスト内包表記」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

はじめに

リスト内包表記は、イテラブルから新しいリストを、読みやすい 1 つの式で作成します。よくある for ループのパターンを置き換えられます。

基本構文

[expression for item in iterable] が基本形です。[x*2 for x in range(5)] は [0,2,4,6,8] になります。
doubled = [x*2 for x in range(5)]
print(doubled)

条件を付ける

[x for x in range(10) if x%2==0] は偶数だけを抽出します。if 節は for 節の後に置きます。
evens = [x for x in range(10) if x % 2 == 0]
print(evens)

文字列の変換

[word.upper() for word in words] は、すべての文字列に upper() を適用します。あらゆるイテラブルで使用できます。
words = ['hello', 'world']
print([w.upper() for w in words])

ネストした内包表記

[x for row in matrix for x in row] は、ネストした内包表記を平坦化する形です(左から右に読み、外側のループが先です)。
matrix = [[1,2,3],[4,5,6]]
flat = [x for row in matrix for x in row]
print(flat)

式内の if/else

[x if x>0 else 0 for x in lst] は、for の後ではなく、式の部分(for の前)で三項演算子を使用します。
lst = [-1, 2, -3, 4]
clipped = [x if x > 0 else 0 for x in lst]
print(clipped)

内包表記と map/filter

[f(x) for x in it if cond(x)] は list(map(f, filter(cond, it))) と同等ですが、より読みやすくなります。
nums = range(10)
result = [x**2 for x in nums if x%2==0]
print(result)

内包表記による平坦化

2 階層以上のネストでは、内包表記で平坦化できます。[[1,2],[3,4]] → [1,2,3,4] となります。
nested = [[1,2],[3,4],[5]]
flat = [x for sub in nested for x in sub]
print(flat)

enumerate() を使った内包表記

[(i, x) for i, x in enumerate(lst)] は、インデックスと値のペアのリストを作成します。
colors = ['red', 'green', 'blue']
indexed = [(i, c) for i, c in enumerate(colors)]
print(indexed)

zip() を使った内包表記

[a+b for a, b in zip(lst1, lst2)] は、2 つのリストの対応する要素を加算します。
a = [1, 2, 3]
b = [10, 20, 30]
print([x+y for x,y in zip(a,b)])

内包表記を使わない場合

ロジックが複雑な場合や副作用が必要な場合は、通常の for ループを使用します。内包表記は 1 行に収まるようにします。
# Too complex for comprehension:
result = []
for x in range(10):
    if x > 5:
        result.append(x * x)
print(result)

理解度チェック

条件と三項演算子の両方を含むリスト内包表記では、三項演算子をどこに置きますか。

まとめ

リスト内包表記は [expr for x in it if cond] の形です。式内の三項演算子は [x if cond else y for x in it] の形で使用します。平坦で読みやすい変換に使用します。

次へ進みましょう

すばらしいです。次のレッスンに進んで、スキルをさらに深めましょう。

よくある質問

「リスト内包表記」レッスンは無料ですか?

はい。「リスト内包表記」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「リスト内包表記」で何を学びますか?

条件付きの内包表記構文でリストを簡潔に作成します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「リスト内包表記」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. リスト内包表記
  2. 集合内包表記と辞書内包表記
  3. ジェネレーター式
  4. yield キーワード
← Python Academyに戻る