打印列表中列表中的项目等(打印嵌套列表)

时间:2013-08-08 01:53:00

标签: python directory

我正在尝试编写一个基本上会打印的函数:

file1

file2

file3

file4

file5

file6

file7

当我进入时:

C = [['file1', [['file2']], ['file3', 'file4', 'file5']], 'file6', ['file7']]

它应该像一个目录。

这是我的代码:

def tree_traverse(directory) :

    list1 = list(directory)
    for it in list1 :
        if it == 'Cc' :
            del(list1[:(list1[it]+3)])
    for item in directory :
        print(item)

每当我输入上面的输入时,我都会收到错误,说C是意外的参数。 另外,当我输入上面没有“C =”的输入时,它就像我输入它一样打印出来。 我很遗憾该做什么。

3 个答案:

答案 0 :(得分:1)

这可以根据需要展开列表。

C = [['file1', [['file2']], ['file3', 'file4', 'file5']], 'file6', ['file7']]

def getFiles(container):
    for f in container:
        if isinstance(f, list):
            for fArray in getFiles(f):
                yield fArray
        else:
            yield f

print "".join("%s\n" %f for f in list(getFiles(C)))

答案 1 :(得分:0)

该函数没有名为C的参数,因此您无法将keyword argument称为C。要么使用directory=...,要么将对象作为普通参数传递给它。

C = ...
tree_traverse(C)

答案 2 :(得分:0)

使用递归方法(应该适用于无限数量的层):

def print_list(obj, final_string=""):
    if isinstance(obj, list):
        for itm in obj:
            final_string = print_list(itm, final_string)
        return final_string
    else:
        return final_string + "\n" + obj

print print_list(c)