リスト内の複数のタプルを繰り返し処理し、特定の順序で各タプルの項目を文字列に戻しています。複数のタプルを繰り返して文字列を返す
たとえば、I入力:
['ABCD', 'EFGH', 'IJKL']
私はそれを返すことを期待する:あなたは助けるために
'AEIBFJCGKDHL'
は、事前にありがとうございます!
リスト内の複数のタプルを繰り返し処理し、特定の順序で各タプルの項目を文字列に戻しています。複数のタプルを繰り返して文字列を返す
たとえば、I入力:
['ABCD', 'EFGH', 'IJKL']
私はそれを返すことを期待する:あなたは助けるために
'AEIBFJCGKDHL'
は、事前にありがとうございます!
あなたはzip必要があります。
lst = ['ABCD', 'EFGH', 'IJKL']
''.join(l for t in zip(*lst) for l in t)
# 'AEIBFJCGKDHL'
import itertools
''.join(itertools.chain(*zip(*mylist)))
または:(。有益なコメントをjuanpa.arrivillagaとPM_2Ringのおかげで)
import itertools
''.join(itertools.chain.from_iterable(zip(*mylist)))
多分 'chain.from_iterable' –
選択肢があるとき(itは文字列を2回スキャンする必要があるため)イテレータよりも' .join'リストを渡すのが望ましいですが、選択肢がなければ明示的に 'list'を呼び出す必要はありません。' .join'はその呼び出しを内部的に実行できます。 –
ただ、一つの追加のオプションを(他の回答も問題ありません):
lst = ['ABCD', 'EFGH', 'IJKL']
''.join(map(''.join, zip(*lst)))
入力の場合、hemflit's chain.from_iterable
solutionは高速ですが、入力文字列の数が多いほど(3から6に増えても)、この方法が勝ちです。
また、itertools.zip_longest
を使用してデータを破棄することなく、len
の不一致の入力を処理して、fillvalue=''
を渡すこともできます。
私はここにタプルはありません... –