2016-02-01 62 views
0

我有两个for loops我遍历两个文件夹中的文件。当我想单独打印变量正常工作(见下文):来自两个for循环的Python打印变量

def sorted_ls(path): 
    ctime = lambda f: os.stat(os.path.join(path, f)).st_ctime 
    return sorted(os.listdir(path), key=ctime) 

#one 
ordered_list_one = list(sorted_ls('C:\Users\folder_one\\')) 
for i in ordered_list_one: 
    print "%s" % i 
    #prints out monkey, panda, cow 

#two 
ordered_list_two = list(sorted_ls('C:\Users\folder_two\\')) 
for j in ordered_list_two: 
    print "%s" % j 
    #prints out bananas, bamboo, grass 

不过,我希望能有来自两个回路输出在另一个打印语句,就像这样:

print "The %s %i likes to eat %s %j"  

因此,这将是最终的输出:

The monkey likes to eat bananas 
The panda likes to eat bamboo 
The cow likes to eat grass 

回答

2

在两个列表上同时运行的最简单方法是Python中内置的zip函数。

ordered_list_one = list(sorted_ls('C:\Users\folder_one\\')) 
ordered_list_two = list(sorted_ls('C:\Users\folder_two\\')) 

for item_one, item_two in zip(ordered_list_one, ordered_list_two): 
    print "The %s likes to eat %s" % (item_one, item_two) 

了解更多:https://docs.python.org/2/library/functions.html#zip

1

你不能做两个循环;但是你可以让一个循环迭代两组值。看看如果使用zip并重复zip(ordered_list_one, ordered_list_two)会发生什么情况。

1

如果你能保证两个输出具有相同的长度,你可以简单地访问由指数的元素(我认为这是有道理的,因为否则你无论如何都将看到意想不到的效果):

folder1 = list(sorted_ls("C:\Users\folder_one")) 
folder2 = list(sorted_ls("C:\Users\folder_two")) 

for idx in range(len(folder1)): 
    print("The {} likes to eat {}".format(folder1[idx], folder2[idx]))