一度に 3 文字の文字列にアクセスしたい場合は、slicingを使用する必要があります。
次のようなリスト内包表記を使用して、文字列の 3 文字の長さの部分のリストを取得できます。
>>> x = 'this is a string'
>>> step = 3
>>> [x[i:i+step] for i in range(0, len(x), step)]
['thi', 's i', 's a', ' st', 'rin', 'g']
>>> step = 5
>>> [x[i:i+step] for i in range(0, len(x), step)]
['this ', 'is a ', 'strin', 'g']
重要な点は次のとおりです。
[x[i:i+step] for i in range(0, len(x), step)]
range(0, len(x), step)
各step
-character スライスの開始インデックスを取得します。 for i in
これらのインデックスを反復処理します。 インデックスから始まり、長さが文字x[i:i+step]
のスライスを取得します。x
i
step
毎回正確に4 ピースが得られることがわかっている場合は、次のようにできます。
a, b, c, d = [x[i:i+step] for i in range(0, len(x), step)]
これは、次の場合に発生します3 * step < len(x) <= 4 * step
。
ちょうど 4 個のピースがない場合、Python はValueError
このリストをアンパックしようとします。このため、この手法は非常に脆弱であると考え、使用しません。
あなたは簡単に行うことができます
x_pieces = [x[i:i+step] for i in range(0, len(x), step)]
にアクセスしていた場所に、 にアクセスa
できるようになりx_pieces[0]
ました。などにb
使用できますx_pieces[1]
。これにより、柔軟性が大幅に向上します。