2017-03-12 103 views
0

我試圖遍歷列表中的多個元組,並將每個元組中的項以特定順序返回到一個字符串中。迭代通過多個元組並返回字符串

例如,如果我輸入:

['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

當你有選擇時(因爲它必須掃描兩次字符串),當然最好通過'.join'列表而不是迭代器。當你沒有選擇時,不需要明確調用list,''.join'可以在內部執行該調用。 –

0

只是一個附加選項(其他答案也可以):

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

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

對於給定輸入,hemflit's chain.from_iterable solution更快,但對於大量輸入字符串(甚至從3增加到6),此方法獲勝。

此外,作爲旁註,您還可以處理輸入不匹配len而不丟棄數據使用itertools.zip_longest,通過fillvalue=''