Python打印两个for循环的变量

时间:2016-02-01 01:23:03

标签: python python-2.7 variables for-loop

我有两个for loops,我遍历两个文件夹中的文件。当我想单独打印变量时,它可以正常工作(见下文):

   
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语句中使用两个循环的输出,如下所示:

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

你不能用两个循环做到这一点;但是你可以在一组值上进行一次循环迭代。如果您使用zip并迭代zip(ordered_list_one, ordered_list_two),请查看会发生什么。

答案 2 :(得分: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]))