PythonでLINQ風操作をやさしく解説|リスト内包表記・map・filterでデータ処理を効率化
この記事でわかること
- PythonでLINQ的な操作とは何か
- リスト内包表記・map・filterを組み合わせた便利なデータ操作
- 条件付きの抽出・変換・集計の方法
- 複雑なリスト処理を効率的に書く考え方
C#のLINQのように、データを「絞る・変換する・集計する」操作を簡単に書く方法をPythonで理解できます
LINQ風操作とは
LINQは、C#でリストや配列を操作するときに使う便利な仕組みです
Pythonでは、リスト内包表記、map、filter、sumなどを組み合わせることで同じような操作ができます
例:条件で絞りつつ変換する
numbers = [1, 2, 3, 4, 5]
# 偶数だけを2倍にする
result = [x * 2 for x in numbers if x % 2 == 0]
print(result) # [4, 8]これだけで LINQでいうWhere + Select の操作ができます
mapとfilterで書く場合
同じ処理をmapとfilterで書くこともできます
numbers = [1, 2, 3, 4, 5]
# filterで偶数だけ抽出して、mapで2倍に変換
result = list(map(lambda x: x * 2, filter(lambda x: x % 2 == 0, numbers)))
print(result) # [4, 8]- filterで条件を満たすものだけ取り出す
- mapで取り出した要素を変換
この流れはLINQの Where と Select に対応しています
集計も簡単
Pythonでは sum や len を組み合わせることで、集計もできます
numbers = [1, 2, 3, 4, 5]
# 偶数の合計
total = sum(x for x in numbers if x % 2 == 0)
print(total) # 6LINQでいう Sum や Count のような操作です
複数条件や組み合わせも可能
リスト内包表記で複雑な条件や組み合わせも簡単に書けます
numbers = [1, 2, 3]
letters = ["a", "b"]
# 全ての組み合わせ
result = [(n, l) for n in numbers for l in letters]
print(result) # [(1, 'a'), (1, 'b'), (2, 'a'), ...]LINQの SelectMany に相当する操作も直感的に書けます
注意点
- 内包表記やmap/filterで無理に1行にすると読みにくくなる
- 集合演算や複雑なネストが多い場合は、for文で分けて書く方が安全
- 慣れると、SQLライクにデータを操作できるようになり、コードがすっきりします
まとめ
- PythonでのLINQ的操作は、リスト内包表記・map・filter・sumなどで実現できます
- 条件で絞る(Where)、変換する(Select)、集計する(Sum/Count)を組み合わせると効率的です
- 複数リストの組み合わせや複雑な条件も直感的に書けます
- コードを簡潔に書ける反面、読みやすさを意識することが大事です
これで、Pythonでのデータ操作の基礎から応用まで、ほぼ一通り揃いました
- 入出力・変数・型
- 式・演算子
- 条件分岐
- 繰り返し処理
- List / Set / Dictionary / Tuple
- リスト内包表記・map/filter
- LINQ風操作
この流れを理解すれば、初心者でも データを自由自在に扱うプログラム が書けるようになります