我知道这与其他几个问题非常相似,但我无法使这个功能正常工作.
def flatten(*args):
return list(item for iterable in args for item in iterable)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出是:
flatten(1) -> [1]
flatten(1,[2]) -> [1, 2]
flatten([1,[2]]) -> [1, 2]
Run Code Online (Sandbox Code Playgroud)
我从另一个SO答案中获取的当前函数似乎根本没有产生正确的结果:
>>> flatten([1,[2]])
[1, [2]]
Run Code Online (Sandbox Code Playgroud)
要快速解决方案,只需使用第二个函数并使其递归.
def flatten(*args):
output = []
for arg in args:
if hasattr(arg, '__iter__'):
output.extend(flatten(*arg))
else:
output.append(arg)
return output
Run Code Online (Sandbox Code Playgroud)