【Python】リスト(list)を抽出する方法を簡単に解説

【Python】リスト(list)を抽出する方法を簡単に解説

公開: 更新:


Pythonのリスト(list)から特定の条件に合う要素を抽出する方法

Pythonのリストから特定の条件に合う要素を抽出するには、リスト内包表記を使用する方法が一般的です。リスト内包表記を用いることによって、コードを簡潔に記述しながら条件に合致する要素のみを新しいリストとして取得できる為、大量のデータを扱う場合でも高速に処理を行うことが可能です。

# 元のリスト
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数のみを抽出
even_numbers = [num for num in numbers if num % 2 == 0]

# 5より大きい数を抽出
greater_than_five = [num for num in numbers if num > 5]

print("偶数:", even_numbers)
print("5より大きい数:", greater_than_five)
【実行結果】
偶数: [2, 4, 6, 8, 10]
5より大きい数: [6, 7, 8, 9, 10]

リスト内包表記では、[ for 変数 in イテラブル if 条件]の形式を使用します。この形式により、元のリストの各要素に対して条件を評価し、条件を満たす要素のみを新しいリストに追加できます。条件部分を変更することによって、様々な抽出条件に対応することが可能です。

複雑な条件や複数の条件を組み合わせる場合は、all()関数any()関数を使用することもできます。これらの関数を活用することによって、より柔軟な抽出処理を実現することができるので、次のセクションで紹介していきます。

「Python」を学べるコードキャンプのサービス

Pythonのリスト(list)から特定の要素を含む部分リストを抽出する方法

Pythonのリストから特定の要素を含む部分リストを抽出する場合、any()関数とリスト内包表記を組み合わせることが有効です。逆に、特定の要素を含まない部分リストを抽出する場合は、not any()を使用します。

この方法を使用することによって、複数の条件を同時に評価できます。同時に評価した結果、それらの条件のいずれかを満たす、または満たさない部分リストを効率的に抽出することが可能です。

# 2次元リスト
fruits = [
    ["リンゴ", "バナナ", "オレンジ"],
    ["イチゴ", "ブドウ", "メロン"],
    ["キウイ", "パイナップル", "マンゴー"],
    ["スイカ", "ペア", "チェリー"]
]

# "バナナ"または"ブドウ"を含むサブリストを抽出
target_fruits = ["バナナ", "ブドウ"]
filtered_fruits = [sublist for sublist in fruits if any(fruit in sublist for fruit in target_fruits)]
print("抽出結果(含む):", filtered_fruits)

# "バナナ"も"ブドウ"も含まないサブリストを抽出
not_target_fruits = ["バナナ", "ブドウ"]
not_filtered_fruits = [sublist for sublist in fruits if not any(fruit in sublist for fruit in not_target_fruits)]
print("抽出結果(含まない):", not_filtered_fruits)
【実行結果】
抽出結果(含む): [['リンゴ', 'バナナ', 'オレンジ'], ['イチゴ', 'ブドウ', 'メロン']]
抽出結果(含まない): [['キウイ', 'パイナップル', 'マンゴー'], ['スイカ', 'ペア', 'チェリー']]

any()関数はイテラブルの要素のいずれかが真であればTrueを返し、not any()とすることで条件が逆転します。この特性を利用することによって、部分リスト内に指定した要素のいずれかが存在するかどうかを判定し、条件を満たすサブリストのみを抽出できます。

上記の方法は複数の条件を組み合わせる場合や大規模なデータセットから特定のパターンを持つサブセットを抽出する場合に有用です。条件を変更することによって、様々な抽出基準に対応することができるので、頭の片隅に入れておくことをおすすめします。

インデックスやスライスを使用してリスト(list)の一部を抽出する方法

Pythonのリストからインデックスを使用して要素を抽出する場合、スライシング構文を活用することが効果的です。スライシング構文を使用することによって、連続した要素や特定のパターンに従った要素を簡単に抽出出来るため、リストの一部を取り出す際に便利です。

# 元のリスト
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# インデックス2から5までの要素を抽出 (3, 4, 5, 6)
slice1 = numbers[2:6]

# 偶数インデックスの要素を抽出 (1, 3, 5, 7, 9)
slice2 = numbers[::2]

# リストを逆順に並べ替え (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
slice3 = numbers[::-1]

# 最後の要素を取得
last_element = numbers[-1]

print("インデックス2から5までの要素:", slice1)
print("偶数インデックスの要素:", slice2)
print("逆順に並べ替えたリスト:", slice3)
print("最後の要素:", last_element)
【実行結果】
インデックス2から5までの要素: [3, 4, 5, 6]
偶数インデックスの要素: [1, 3, 5, 7, 9]
逆順に並べ替えたリスト: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
最後の要素: 10

スライシング構文はリスト[開始:終了:ステップ]の形式で使用します。ステップを指定することによって、一定間隔で要素を抽出したりリストを逆順に並べ替えたりすることができます。開始インデックスは含まれますが、終了インデックスは含まれない為、この点には注意してください。

また、負のインデックスを使用することも可能です。負のインデックスを使用すると、リストの末尾から要素を指定出来る為、リストの長さを知らなくても末尾の要素を簡単に抽出できます。例を挙げると、numbers[-1]はリストの最後の要素を返し、numbers[-2]は最後から2番目の要素を返すというイメージです。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する