我有两个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
答案 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)
答案 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]))