-1

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

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 =”的上述输入时,它就像我输入它一样打印它。我完全不知道该怎么做。

4

3 回答 3

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)))
于 2013-08-08T02:27:16.693 回答
0

该函数没有调用参数,C因此您不能将关键字参数传递给它C。要么使用,要么directory=...将对象作为普通参数传递给它。

C = ...
tree_traverse(C)
于 2013-08-08T02:01:37.037 回答
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)
于 2013-08-08T02:40:49.620 回答