2017-03-12 11 views
0

リスト内の複数のタプルを繰り返し処理し、特定の順序で各タプルの項目を文字列に戻しています。複数のタプルを繰り返して文字列を返す

たとえば、I入力:

['ABCD', 'EFGH', 'IJKL'] 

私はそれを返すことを期待する:あなたは助けるために

'AEIBFJCGKDHL' 

は、事前にありがとうございます!

+3

私はここにタプルはありません... –

答えて

4

あなたはzip必要があります。

lst = ['ABCD', 'EFGH', 'IJKL'] 

''.join(l for t in zip(*lst) for l in t) 
# 'AEIBFJCGKDHL' 
4
import itertools 
''.join(itertools.chain(*zip(*mylist))) 

または:(。有益なコメントをjuanpa.arrivillagaとPM_2Ringのおかげで)

import itertools 
''.join(itertools.chain.from_iterable(zip(*mylist))) 

+4

多分 'chain.from_iterable' –

+2

選択肢があるとき(itは文字列を2回スキャンする必要があるため)イテレータよりも' .join'リストを渡すのが望ましいですが、選択肢がなければ明示的に 'list'を呼び出す必要はありません。' .join'はその呼び出しを内部的に実行できます。 –

0

ただ、一つの追加のオプションを(他の回答も問題ありません):

lst = ['ABCD', 'EFGH', 'IJKL'] 

''.join(map(''.join, zip(*lst))) 

入力の場合、hemflit's chain.from_iterable solutionは高速ですが、入力文字列の数が多いほど(3から6に増えても)、この方法が勝ちです。

また、itertools.zip_longestを使用してデータを破棄することなく、lenの不一致の入力を処理して、fillvalue=''を渡すこともできます。