Pythonで整数のみを含むタプルをフィルタリングする方法
Pythonでは、リストの中から整数のみを含むタプルを抽出(フィルタリング)したいケースがあります。そのような場合、シンプルな反復処理と「not」演算子、そして組み込みの「isinstance」メソッドを組み合わせることで実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_tuple = [(14, 25, "Python"), (5, 6), (3, ), ("cool", )]
print("元のタプルのリスト:")
print(my_tuple)
my_result = []
for sub in my_tuple:
temp = True
for element in sub:
if not isinstance(element, int):
temp = False
break
if temp:
my_result.append(sub)
print("フィルタリング後の結果:")
print(my_result)出力結果
元のタプルのリスト:
[(14, 25, 'Python'), (5, 6), (3,), ('cool',)]
フィルタリング後の結果:
[(5, 6), (3,)]コードの解説
- まず、複数のタプルを含むリストを定義し、コンソールに表示します。
- 結果を格納するための空のリストを作成します。
- リストを反復処理しながら、「isinstance」メソッドを使って各要素が整数型(int)かどうかを判定します。
- 整数型以外の要素が見つかった場合は、フラグ用のブール値に「False」を代入し、break文で内側のループを抜けます。
- 最終的にブール値の状態に応じて、条件を満たすタプルだけを新しいリストに追加します。
- このようにして、文字列などを含むタプルが除外され、整数のみのタプルだけが出力されます。
より簡潔な書き方:all()関数とリスト内包表記
上記のコードは、組み込み関数「all()」とリスト内包表記を組み合わせることで、さらに簡潔に記述できます。
my_result = [tup for tup in my_tuple if all(isinstance(element, int) for element in tup)] print(my_result) # [(5, 6), (3,)]
「all()」は、タプル内のすべての要素が条件を満たす場合にのみTrueを返すため、1行で同じフィルタリング処理を実現できます。可読性が高く、Pythonらしいイディオムとしても推奨される書き方です。
-
Pythonでタプルのタプル(ネストしたタプル)内に特定の要素が存在するか確認する方法
Pythonでは、タプルの中にさらにタプルを格納する「ネスト構造」を作ることができます。このようなタプルのタプル(入れ子になったタプル)の中に、特定の値が要素として含まれているかどうかを調べたい場面はよくあります。本記事では、その確認方法を2つのアプローチから解説します。方法1:any() 関数を使うany() 関数を使うと、forループと組み合わせて、各サブタプルの中に目的の値が存在するかどうかを効率的にチェックできます。条件式全体を if 文と else 節で囲むことで、結果に応じた処理を簡潔に記述できます。コード例Atuple = [(Mon,10),(Tue,8),(Wed,8),(T
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue