今という器の中から

過ごした時間を振り返る雑記ブログ

pythonを使った、文字列の相互連結

s1 = "パトカー"
s2 = "タクシー"
print(''.join([char1 + char2 for char1, char2 in zip(s1, s2)]))

.join とは
join: 文字列シーケンスの連結
sep.join(seq)
sepを区切り文字として、seqを連結してひとつの文字列にする。
今回は区切り文字を用いず、[char1 + char2 for char1, char2 in zip(s1, s2)] を連結する

zip とは
複数のシーケンスオブジェクトを同時にループするときに使用する。要素数が違う場合は一番少ないものに合わせられる。
s1,s2 のどちらか要素数が少ないものに合わせられる。今回は等しい。

同時にループを回して'パタ' 'トク' 'カシ' 'ーー' ってのをつくった後に.join で一つの文字列にしているのだと思うが、理解に自信が持てない。自分にとっては、[char1 + char2 for char1, char2 in の辺りがブラックボックスなんだと思う。内包表記というpython 独特の表記方法らしいが、分かっている気がしない。英語の文法を習ったときのような気分だ。言葉でなく配置される場所によって勝手に力学が発生しているような気になる。ちなみに例えに出してみたものの、英語も分からない。