2016-02-01 61 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]))