2017-10-07 73 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