【发布时间】:2019-01-13 14:46:33
【问题描述】:
我正在尝试创建一个函数来展平嵌套组合并将其传递到与输入具有相同类型的迭代中。比如:
>>> # tuple with list, tuple and set
>>> flatten_iterable([[1,2,3],(1,2,3),{1,2,3}])
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> # set with tuples
>>> flatten_iterable({(1,2,3),(3,4,5),(5,6,7,8)})
{1, 2, 3, 4, 5, 6, 7, 8}
>>> # tuple with list, set, tuple
>>> flatten_iterable(([1,2,3],{3,4,5},(5,6,7,8)))
(1, 2, 3, 3, 4, 5, 5, 6, 7, 8)

到目前为止,我有以下代码:
def flatten_iterable(a_list):
new_list = []
import collections
for i in a_list:
if isinstance(i, collections.Iterable):
new_list.extend(flatten_iterable(i))
else:
new_list.append(i)
return new_list
但我只是不知道如何使new_list 具有与输入相同的类型。
【问题讨论】:
-
如果输入是另一个可迭代的,例如产生值的函数怎么办?在这种情况下你会返回什么?
标签: python types iterable flatten