Python – 指定した範囲内の要素を持つタプルを抽出する方法
指定された範囲内の要素だけを持つタプルをリストから抽出したい場合、filter関数とlambda式を組み合わせるのが効果的です。この記事では、その具体的な実装方法をサンプルコードとともに解説します。
サンプルコード
以下は、範囲内の要素を持つタプルを抽出する実際のコード例です。
my_list = [(13, 15, 17), (25, 56), (13, 21, 19), (44, 14)]
print("The list is :")
print(my_list)
beg, end = 13, 22
my_result = list(filter(lambda sub : all(element >= beg and element <= end for element in sub),
my_list))
print("The result is :")
print(my_result)出力結果
The list is : [(13, 15, 17), (25, 56), (13, 21, 19), (44, 14)] The result is : [(13, 15, 17), (13, 21, 19)]
コードの解説
まず、複数のタプルを含むリストを定義し、コンソールに表示します。
次に、抽出条件となる範囲の開始値(beg)と終了値(end)を定義します。この例では13から22が指定されています。
lambda式の中でall関数を使用し、タプル内のすべての要素が開始値以上かつ終了値以下であるかどうかを判定します。条件を満たすタプルのみが
filter関数によって残され、list関数でリスト形式に変換されます。抽出結果は変数
my_resultに代入され、最後にコンソールへ出力されます。
ポイント
all関数を使うことで、タプル内の一つでも範囲外の要素が含まれていれば、そのタプル全体が除外されます。例えば、出力結果を見ると(25, 56)や(44, 14)は範囲外の要素を含むため除外され、(13, 15, 17)と(13, 21, 19)だけが結果として残っています。この手法は、データの前処理や条件に合致するレコードの絞り込みなど、さまざまな場面で活用できます。
-
Pythonでリストに数値の範囲(シーケンス)を追加する方法
リストはPythonで最も頻繁に使用されるデータコンテナの一つです。リストを扱っていると、連続した数値のシーケンスを要素として追加したい場面によく出会います。Pythonには、このような数値のシーケンスをリストに追加するための方法がいくつか用意されています。本記事では、代表的な手法をわかりやすく紹介します。 range()とextend()を使う方法 extend()メソッドを使うと、リストの末尾に複数の要素を一度に追加できます。range()関数で生成した数値のシーケンスをextend()に渡すことで、必要な連番をすべてリストの末尾にまとめて追加できます。 コード例 listA = [55,
-
指定した範囲内で奇数個の約数を持つ要素の個数を求めるPythonプログラム
本記事では、以下の問題文に対する解決策について詳しく解説します。 問題文 問題 − ある範囲 [n, m] が与えられたとき、その範囲内に存在する「奇数個の約数を持つ数」の個数を求めます。 アプローチ まず押さえておきたい重要な性質として、「完全平方数だけが奇数個の約数を持つ」ということが挙げられます。これは、約数が通常ペア(d と n/d)で現れるのに対し、完全平方数の場合は平方根に相当する約数だけがペアにならず単独で存在するためです。 したがって、この問題は「指定された範囲内に含まれる完全平方数の個数を数える」ことに帰着できます。 なお、n と m はどちらも範囲に含まれるため、境界値での