Python – ネストされたリストから特定のデータ型の行だけを抽出する方法
はじめに
Pythonでは、リストの中にリストが入った「ネストされたリスト」から、特定のデータ型の要素だけで構成される行を抽出したい場面があります。そんなときに便利なのが、リスト内包表記、isinstance() 関数、そして all() 関数を組み合わせた手法です。
以下に、具体的な実装例を示します。
サンプルコード
my_list = [[14,35, "Will"], [12, 26, 17], ["p", "y", "t"], [29, 40, 21]]
print("元のリスト:")
print(my_list)
# 抽出したいデータ型を指定
my_data_type = int
# すべての要素が指定した型である行だけを抽出
my_result = [row for row in my_list if all(isinstance(element, my_data_type) for element in row)]
print("抽出結果:")
print(my_result)実行結果
元のリスト: [[14, 35, 'Will'], [12, 26, 17], ['p', 'y', 't'], [29, 40, 21]] 抽出結果: [[12, 26, 17], [29, 40, 21]]
コードの解説
まず、複数のリストを要素として持つネストされたリストを定義し、コンソールに表示します。
次に、抽出条件となるデータ型(この例では
int)を変数に代入して定義します。リスト内包表記を使い、元のリストの各行(各サブリスト)を順番に走査します。
各行に対して、
all()関数とisinstance()メソッドを組み合わせることで、その行のすべての要素が指定したデータ型に該当するかどうかを判定します。条件を満たした行だけが新しいリストに追加され、結果が変数に代入されます。
最後に、抽出された結果がコンソールに出力されます。
ポイント解説
isinstance(element, my_data_type) は、要素が指定した型のインスタンスであるかどうかを True / False で返します。さらに all() は、渡されたすべての値が True の場合にのみ True を返すため、「行内の全要素が整数である」といった厳密な条件チェックが1行で実現できます。
なお、上記の例では文字列を含む行 [14, 35, "Will"] と ["p", "y", "t"] が除外され、整数のみで構成される行 [12, 26, 17] と [29, 40, 21] だけが結果として残ります。
この手法は、データの前処理やバリデーションなど、型の一貫性を確認しながらデータを整理したいときに非常に有用です。my_data_type の部分を str や float などに変更するだけで、任意のデータ型に対応できます。
-
Pythonでウィキペディアのデータを抽出する方法を徹底解説
この記事では、Pythonを使ってウィキペディアのデータを抽出する方法を詳しく解説します。PythonはWebスクレイピングの分野で広く活用されており、Webサイトからメタ情報を収集するツールの開発に非常に適した言語です。 本記事では、Wikipedia APIとwikipediaライブラリを使用して、ウィキペディアのソースURLからデータを取得します。APIを利用することで、指定したURLから簡単にデータをフェッチでき、その後、対象のURLに対してメソッドを呼び出して、取得した情報を画面に出力することができます。 事前準備:wikipediaライブラリのインストール ウィキペディアからデータ
-
Pythonのデータ型変換関数一覧と使い方|int・str・floatなどをわかりやすく解説
Pythonにおけるデータ型変換とはPythonでは、処理の中であるデータ型から別のデータ型へ値を変換したい場面がよくあります。たとえば、ユーザー入力として受け取った文字列を数値として計算したり、数値を読みやすい形で文字列に整えたりするケースです。Pythonの型変換(キャスト)は非常にシンプルで、型名をそのまま関数のように呼び出すだけで実行できます。組み込みの変換関数が多数用意されており、いずれも変換結果を表す新しいオブジェクトを返すのが特徴です。主な型変換関数の一覧以下に、Pythonで利用できる代表的なデータ型変換関数をまとめました。No.関数説明1int(x [, base])xを整数