2017-08-29 44 views
0

我正在尋找一種pythonic和乾淨的方式來合併一般形式的iterables,甚至不知道它們的類型。通用解決方案合併迭代如列表,元組和集合

>>> l = [0, 1] 
>>> t = (2, 3) 
>>> s = {4, 5} 

我可以投全部變成list和將它們連接起來的爲例:

>>> res = [] 
>>> for it in (l, t, s): 
...  res += it 
... 
>>> res 
[0, 1, 2, 3, 4, 5] 

所以你最終像這樣的效用函數:

def merge_it(*args): 
    res = [] 
    for it in args: 
     res += list(it) 
    return res 

但事實並非如此感覺很好...有什麼更優雅的做法嗎?

回答

3

itertools.chain做到這一點:

>>> from itertools import chain 
>>> l = [0, 1] 
>>> t = (2, 3) 
>>> s = {4, 5} 
>>> list(chain(l, t, s)) 
[0, 1, 2, 3, 4, 5]