Pythonでリスト内の隣接する単語のみを結合する方法
この記事では、Pythonのリストに含まれる隣接する単語(文字列)だけを結合し、数字はそのまま残す方法を解説します。以下の手順に沿って問題を解いていきましょう。
解決の手順
- リストを初期化する
isalphaメソッドを使って、数字以外の単語を抽出するjoinメソッドで単語同士を結合するisdigitメソッドで数字を抽出し、結果の末尾に追加する- 結果を出力する
方法1: リスト内包表記を使う
まずは、リスト内包表記を使って単語と数字をそれぞれ抽出する方法から見ていきます。
# リストの初期化
strings = ['Tutorials', '56', '45', 'point', '1', '4']
# 結果格納用のリスト
result = []
words = [element for element in strings if element.isalpha()]
digits = [element for element in strings if element.isdigit()]
# 単語を結合して結果に追加
result.append("".join(words))
result += digits
# 結果の出力
print(result)上記のコードを実行すると、次のような結果が得られます。
出力
['Tutorialspoint', '56', '45', '1', '4']
「Tutorials」と「point」という2つの単語が結合されて「Tutorialspoint」になり、数字は元の順序のまま保持されているのがわかります。
方法2: filter関数を使う
続いて、filter関数を使って単語と数字を振り分ける、別のアプローチを紹介します。
# リストの初期化
strings = ['Tutorials', '56', '45', 'point', '1', '4']
def isalpha(string):
return string.isalpha()
def isdigit(string):
return string.isdigit()
# filterで単語と数字をそれぞれ抽出して結果を作成
result = ["".join(filter(isalpha, strings)), *filter(isdigit, strings)]
# 結果の出力
print(result)こちらのコードも実行すると、同じ結果が得られます。
出力
['Tutorialspoint', '56', '45', '1', '4']
まとめ
この記事では、リスト内の隣接する単語のみを結合する2つの方法を紹介しました。リスト内包表記を使う方法と、filter関数を使う方法です。どちらも簡潔に書けるPythonらしいアプローチなので、用途や可読性に応じて使い分けるとよいでしょう。
記事について不明な点や質問がある場合は、ぜひコメント欄でお知らせください。
-
Pythonでリストをソートする方法をわかりやすく解説
Pythonのsortメソッドを使ったリストの並べ替えPythonでは、リストに対してsort()メソッドを呼び出すことで、要素を昇順に並べ替えることができます。内部的には、各クラスが持つ比較演算子(__gt__や__lt__)が使われており、文字列や数値などの組み込み型はあらかじめこれらが実装されているため、特別な設定なしに自動的にソートされた結果を得られます。実際の使用例を見てみましょう。words = [Hello, World, Foo, Bar, Nope] numbers = [100, 12, 52, 354, 25] words.sort() numbers.sort() p
-
Pythonで文字列を単語のリストに変換する方法
文字列を単語のリストに変換したい場合は、空白文字を基準に文字列を分割するだけで実現できます。最もシンプルな方法は、文字列クラスが標準で提供している split() メソッドを使うことです。このメソッドのデフォルトの区切り文字は空白であり、文字列に対して呼び出すと、空白文字の位置で自動的に分割してくれます。split()メソッドを使う方法引数を指定せずに split() を呼び出すだけで、連続する空白もまとめて処理され、単語ごとのリストが返されます。コード例>>> Please split this string.split() [Please, split, this, st