Pythonで偶数の長さの文字列のみを含む行を抽出する方法
文字列のリストの中から「すべての要素が偶数の長さである行」だけを抽出したい場合、リスト内包表記と all() 関数、そして剰余演算子 % を組み合わせると、簡潔に実現できます。
以下に具体的な例を示します。
サンプルコード
my_list = [["python", "is", "best"], ["best", "good", "python"], ["is", "better"], ["for", "coders"]]
print("The list is :")
print(my_list)
my_result = [row for row in my_list if all(len(element) % 2 == 0 for element in row)]
print("The resultant list is :")
print(my_result)
実行結果
The list is : [['python', 'is', 'best'], ['best', 'good', 'python'], ['is', 'better'], ['for', 'coders']] The resultant list is : [['python', 'is', 'best'], ['best', 'good', 'python'], ['is', 'better']]
処理の流れ・解説
文字列を要素に持つリストのリスト(ネストされたリスト)を定義し、まずコンソールに表示します。
リスト内包表記を使い、元のリストの各行(各サブリスト)を順番に取り出しながら反復処理します。
条件式では
all()関数と剰余演算子%を用いて、その行に含まれるすべての文字列の長さが偶数かどうかを判定します。条件を満たした行だけが新しいリストに格納され、変数に代入されます。
最後に、その変数の内容をコンソールへ出力します。
この書き方なら、for ループや if 文を何重にも入れ子にする必要がなく、1 行のコードで読みやすく効率的にフィルタリングできます。上記の例では、「python」(6 文字)、「is」(2 文字)、「best」(4 文字)などはすべて偶数長のため残りますが、最後の行に含まれる「for」は 3 文字と奇数長であるため、その行全体が結果から除外されます。
-
Pythonで0と1を交互に並べたリストを初期化する方法
この記事では、Pythonにおいて0と1を交互に含むリストを初期化する方法を解説します。リストの長さが指定されており、その長さに応じて0と1を交互に配置したリストを作成することを目標にします。方法1:forループと条件分岐を使うまずは最も基本的な方法です。以下の手順で実装します。空のリストとリストの長さを初期化する。長さの回数だけ繰り返し処理を行い、インデックスの偶奇に応じて0と1を交互に追加する。結果を出力する。コード例# 空のリストを初期化 result = [] length = 7 # 繰り返し処理 for i in range(length): # インデックスの偶奇を判定
-
Pythonで文字列リストから数値を抽出する2つの方法:splitとmap/isnumericの使い方
Pythonでデータ処理を行っていると、文字と数字が混在し、かつ一定のパターンを持つリストに遭遇することがあります。例えば「曜日-数値」のように、識別子と数値が組み合わされたデータは実務でもよく見られます。 本記事では、このようなリストから数値部分だけを抽出し、その後の計算や集計に利用できるようにする方法を、2つのアプローチで解説します。 方法1:split関数を使う split() 関数は、指定した区切り文字を基準に文字列を分割します。以下の例では、リストの各要素がハイフン(-)によって文字部分と数値部分に区切られています。この特徴を利用し、リスト内包表記で各要素を処理することで、数値部分を