我正在使用Python中的生成器,我正在尝试使用简单的递归方案来实现flatten-function.也就是说,一个函数将一个列表作为输入,该列表可能包含子列表,并输出一个只能在输入的原子元素上迭代的可迭代对象.
所以,print(list(flatten([1,2,3,[4,5,6]])))应该返回包含的内容[1,2,3,4,5,6].
我的尝试如下:
def flatten(toflatten):
try:
for element in toflatten:
flatten(element)
except TypeError:
yield toflatten
Run Code Online (Sandbox Code Playgroud)
因此,它应检查其参数是否是可迭代对象.如果是这种情况,也可以对此对象进行递归.否则,将其作为原子元素.
这不起作用,flatten([1,2,3,[4,5,6]])只返回一个空列表.
为什么会这样?特别是; 为什么它甚至没有对此输入执行递归函数调用?(我使用的是Python 3.5)