2017-10-07 45 views
1

如何創建一個可以接受任何列表並將其擴展的函數。這裏是我談到的:函數擴展列表

def list(l, p): 

     return l.extend(p) 

我也想要p是任何性質。

+0

*性質* *? – mentalita

+2

爲什麼不使用'extend'? – Mureinik

+1

首先,你重新定義了內建'list'ctor是非常糟糕的。其次,請說出「任何性質」,以澄清你的意思。請注意,Python中有_iterable_和_non-iterable_值,可以解釋您對它們的期望結果。 – myaut

回答

0

請不要重寫關鍵字,在這裏我發佈一個基於我對你的問題的理解,這是不是很清楚的答案。

def my_list(l, *args): 
    from itertools import chain 
    sub_lists = filter(lambda x: isinstance(x, list), args) 
    elements = filter(lambda x: not isinstance(x, list), args) 
    l.extend(list(chain.from_iterable(sub_lists))) 
    l.extend(list(elements)) 
    return l 


l1 = [1, 2] 
l2 = [3, 4] 
l3 = [5, 6] 
e = 7 

new_list = my_list(l1, l2, l3, e, 8) 

# [1, 2, 3, 4, 5, 6, 7, 8] 
print(new_list) 
+0

這就是我正在尋找的東西。 – Shyryu