【问题标题】:Python print variables from two for loopsPython 打印来自两个 for 循环的变量
【发布时间】:2016-02-01 01:23:02
【问题描述】:

我有两个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 "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

【问题讨论】:

    标签: python python-2.7 variables for-loop


    【解决方案1】:

    在两个列表上同时运行的最简单方法是 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        如果您可以确保两个输出具有相同的长度,您可以简单地按索引访问元素(我认为这是有道理的,否则无论如何您都会看到意想不到的结果):

        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]))
        

        【讨论】:

          猜你喜欢
          • 2016-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-18
          • 2018-02-04
          相关资源
          最近更新 更多