Pythonでタプルのリストから正の要素のみを持つタプルを抽出する方法
タプルのリストから「すべての要素が正の値(0以上)」であるタプルだけを取り出したい場合、リスト内包表記を使うと非常に簡潔に実現できます。
サンプルコード
my_list = [(56, 43), (-31, 21, 23), (51, -65, 26), (24, 56)]
print("The list is : ")
print(my_list)
my_result = [sub for sub in my_list if all(elem >= 0 for elem in sub)]
print("The positive elements are : ")
print(my_result)
実行結果
The list is : [(56, 43), (-31, 21, 23), (51, -65, 26), (24, 56)] The positive elements are : [(56, 43), (24, 56)]
コードの解説
まず、複数のタプルを含むリストを定義し、コンソールに表示します。
リスト内包表記を使い、リスト内の各タプルを1つずつ取り出して処理します。
all()関数とジェネレータ式を組み合わせることで、「タプル内のすべての要素が0以上かどうか」を一度に判定できます。条件を満たしたタプルだけが新しいリストの要素として追加され、変数
my_resultに格納されます。最後に、その変数の内容をコンソールに出力します。
ポイント:all()関数とは
all()は、渡されたイテラブル内のすべての要素が真(True)であればTrueを返し、1つでも偽が含まれていればFalseを返す組み込み関数です。ここでは elem >= 0 という条件式を全要素に対して評価しているため、負の数を1つでも含むタプルは自動的に除外されます。
filter()を使った別の書き方
同じ処理は、filter()関数とlambda式を組み合わせても実装できます。
my_result = list(filter(lambda sub: all(elem >= 0 for elem in sub), my_list))
どちらの方法でも結果は同じですが、可読性の高さからリスト内包表記の方がPythonらしい(Pythonicな)書き方として広く推奨されています。
-
リスト内の要素の合計を求めるPythonプログラム
この記事では、Pythonを使ってリスト内のすべての要素の合計を求める方法について、具体的なコード例とともに解説します。問題の定義リストが入力として与えられたとき、そのリストに含まれるすべての要素の合計値を計算する必要があります。例えば、[1, 2, 3, 4, 5]というリストが与えられた場合、出力は 15(1+2+3+4+5)となります。この問題を解くためのアプローチは主に2つあります。1つは組み込み関数を使用する方法、もう1つはブルートフォース(総当たり)方式でループ処理を行う方法です。方法1:組み込み関数 sum() を使うPythonには標準で用意されている組み込み関数 sum()
-
PythonでリストからN個の最大要素を取得する方法
整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):