Pythonでリストからトリプレット(連続する3要素)を作成する方法
Pythonのリストは、順序付けられており、変更可能(ミュータブル)なコレクションです。リストは角括弧 [ ] を使って記述し、各要素にはインデックス番号を指定してアクセスします。負のインデックスを使うと末尾から数えることができ、-1 は最後の要素を指します。また、開始位置と終了位置を指定すれば範囲を指定したスライスも可能で、その場合の戻り値は指定した要素を含む新しいリストになります。
トリプレットとは
「トリプレット」とは、リスト内の連続する3つの要素を組み合わせたものです。例えば、単語のリストから「隣接する3単語ずつ」の組を次々に取り出したい場合などに活用できます。本記事では、①リスト内包表記を使う方法と、②forループによる反復処理を使う方法の2通りを紹介します。
方法1:リスト内包表記を使う
最も簡潔に書けるのが、リスト内包表記とスライスを組み合わせる方法です。range(len(list) - 2) でループしながら、list[i:i+3] で連続する3要素を切り出します。
# 単語リストからトリプレットを作成する
# 単語リストの初期化
list_of_words = ['I', 'am', 'Vishesh', 'and', 'I', 'like', 'Python', 'programming']
# リスト内包表記を使用
List = [list_of_words[i:i + 3]
for i in range(len(list_of_words) - 2)]
# 結果を出力
print(List)
方法2:forループによる反復処理を使う
処理の流れが直感的で初心者にも分かりやすいのが、forループを使う方法です。一時的なリスト temp を作成して3つの要素を順に追加し、それを出力用リストに格納していきます。
# 単語リストの初期化
list_of_words = ['I', 'am', 'Vishesh', 'and', 'I', 'like', 'Python', 'programming']
# 出力リストの初期化
out = []
# リストの長さを取得
length = len(list_of_words)
# 反復処理を使用
for z in range(0, length - 2):
# 3単語を格納するための一時リストを作成
temp = []
temp.append(list_of_words[z])
temp.append(list_of_words[z + 1])
temp.append(list_of_words[z + 2])
out.append(temp)
# 結果を出力
print(out)
実行結果
どちらの方法でも同じ出力が得られます。元のリストの長さが8なので、トリプレットは 8 - 2 = 6 個生成されます。
[['I', 'am', 'Vishesh'], ['am', 'Vishesh', 'and'], ['Vishesh', 'and', 'I'], ['and', 'I', 'like'], ['I', 'like', 'Python'], ['like', 'Python', 'programming']]
ポイント解説
- range(len(list) - 2):最後のトリプレットは「後ろから3番目」の要素から始まるため、ループ範囲は長さマイナス2までにします。これを怠ると
IndexErrorが発生します。 - スライス list[i:i+3]:インデックス i から i+2 までの3要素を取得します。範囲が末尾を超えても自動的に切り詰められるため、安全に動作します。
- 応用:スライス幅を変更すれば、4つ組や任意のサイズのグループ作成にも簡単に拡張できます。
-
Pythonで3Dリスト(3次元配列)を作成する方法【サンプルコード付き】
3Dリストとは、いわゆる3次元配列のことです。本記事では、Pythonで3Dリストを作成し、その内容を整形して出力するプログラムを解説します。ここでは例として、文字列「*」を初期値とする3×2×2の3次元リストを生成しますが、仕組みを理解すれば整数など任意の要素を持つ配列にも簡単に応用できます。 3Dリストのイメージ 3次元リストは、リストの中にリスト、さらにその中にリストが入った多段構造のデータです。たとえば、3×3×2の3Dリストは次のように表現できます。 [[1,1,1],[2,2,2],[3,3,3]], [[4,4,4],[5,5,5],[6,6,6]] アルゴリズム ステップ1:
-
Pythonでリストから文字列を作成する方法|join()関数の使い方を解説
Pythonのjoin()関数とはPythonには、シーケンス型(リストやタプルなど)の要素を連結して1つの文字列を生成するための組み込みメソッド join() が用意されています。join()は区切り文字(セパレーター)を持つ文字列に対して呼び出し、各要素の間にその区切り文字を挿入しながら要素を連結します。区切り文字が不要な場合は、空文字列()を使って呼び出すことで、要素をそのまま連結した文字列を取得できます。区切り文字なしで連結する例以下の例では、文字1つずつを格納したリストを、空文字列を介して連結しています。>>> lst = [h, e, l, l, o]>&g