我正在尝试编写一个基本上会打印的函数:
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 =”的输入时,它就像我输入它一样打印出来。 我很遗憾该做什么。
答案 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)