Pythonでネストされたリストから正の数だけを抽出する方法
Pythonのリストはネスト(入れ子)構造にすることができます。つまり、リストの要素そのものがリストであるケースです。本記事では、このような「リストのリスト」から正の数のみを取り出す方法を解説します。処理結果としては、正の数だけを含むネストされたリストが新しいリストとして生成されます。
リスト内包表記(for in)を使う方法
最もシンプルなのが、forループによるリスト内包表記を使うアプローチです。各要素に対して比較演算子で値を判定し、正の数であれば新しいリストに格納します。内側の内包表記が各サブリストの正の数を集め、外側の内包表記がそれらをまとめて最終的なリストのリストを作成します。
コード例
listA = [[-9, -1, 3], [11, -8, -4, 434, 0]]
# 元のリスト
print("元のリスト :\n", listA)
# 正の要素のみを抽出
res = [[y for y in x if y > 0] for x in listA]
# 結果を出力
print("正の数のリスト :", res)
実行結果
上記のコードを実行すると、次のような結果が得られます。
元のリスト : [[-9, -1, 3], [11, -8, -4, 434, 0]] 正の数のリスト : [[3], [11, 434]]
appendメソッドを使う方法
もうひとつの方法は、appendメソッドを使って要素を順次コンテナへ追加していく手法です。ここではネストされたforループを組み立てます。内側のforループで各要素の値が正であるかどうかを判定し、条件を満たす要素を一時リストに追加します。そして外側のforループが、完成した各サブリストを結果リストに格納していきます。
コード例
listA = [[-9, -1, 3], [11, -8, -4, 434, 0]]
# 元のリスト
print("元のリスト :\n", listA)
res = []
# appendを使った抽出処理
for elem in listA:
temp = []
for i in elem:
if i > 0:
temp.append(i)
res.append(temp)
# 結果を出力
print("正の数のリスト :", res)
実行結果
上記のコードを実行すると、次のような結果が得られます。
元のリスト : [[-9, -1, 3], [11, -8, -4, 434, 0]] 正の数のリスト : [[3], [11, 434]]
まとめ
どちらの方法でも同じ結果が得られますが、リスト内包表記を使う方法はコードが簡潔になり、Pythonらしい書き方と言えます。一方、appendメソッドを使う方法は処理の流れが直感的に理解しやすく、初心者にも読みやすいというメリットがあります。用途や可読性の要件に応じて使い分けるとよいでしょう。
-
PythonでリストからN個の最大要素を取得する方法
整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):
-
【Python入門】リストのリスト(ネストしたリスト)の長さを取得する方法
はじめにPythonでは、リストの中にさらにリストが格納された「ネストしたリスト(リストのリスト)」を扱うことがよくあります。このようなデータ構造の全要素数を取得したい場合、いくつかの方法があります。本記事では、代表的な手法をわかりやすく解説します。方法1:ネストしたループで要素をカウントする最も基本的な方法は、二重のforループを使って各サブリストの要素を順番に数えていくことです。>>> a = [[1, 2, 3], [4, 5, 6]]>>> c = 0>>> for x in a:... for y in x:...