Skip to main content
 首页 » 编程设计

Python:展平函数在控制台中有效但在文件中无效

2025年05月04日13qq78292959

我正在做一个练习来展平嵌套列表。该代码在控制台中有效,但在文件中时无效。我不知道发生了什么事。 :(

def flatten(nested): 
    """ 
            >>> flatten([2, 9, [2, 1, 13, 2], 8, [2, 6]]) 
            [2, 9, 2, 1, 13, 2, 8, 2, 6] 
            >>> flatten([[9, [7, 1, 13, 2], 8], [7, 6]]) 
            [9, 7, 1, 13, 2, 8, 7, 6] 
            >>> flatten([[9, [7, 1, 13, 2], 8], [2, 6]]) 
            [9, 7, 1, 13, 2, 8, 2, 6] 
            >>> flatten([[5, [5, [1, 5], 5], 5], [5, 6]]) 
            [5, 5, 1, 5, 5, 5, 5, 6] 
    """ 
    simple = [] 
 
    for x in nested: 
            if type(x) == type([]): 
                    for y in x: 
                            simple.append(y) 
            else: 
                    simple.append(x) 
    return simple 
 
 
 
if __name__ == '__main__': 
    import doctest 
    doctest.testmod() 

我首先尝试递归地解决这个练习,但决定先尝试迭代。

编辑:在文件中执行时,它只是打印出原始函数参数 时间差

请您参考如下方法:

问题是您的 flatten 函数只展平了一层。 doctest之所以打印出错误,是因为它确实在报错。它们不是您传入的内容。

File "test.py", line 5, in __main__.flatten 
Failed example: 
    flatten([[9, [7, 1, 13, 2], 8], [7, 6]]) 
Expected: 
    [9, 7, 1, 13, 2, 8, 7, 6] 
Got: 
    [9, [7, 1, 13, 2], 8, 7, 6] 

您应该研究一种递归方法,而不是附加 y--- 您也可以在 y 上调用 flatten。 if type(x) != type([]) 可以作为您的基本情况。