【问题标题】:Iterating over two lists at the same time in Python在 Python 中同时迭代两个列表
【发布时间】:2015-05-31 14:36:49
【问题描述】:

假设我有以下内容:

cell_list = ['B1', 'B2', 'B3']
cell_data = ['1', '2', '3']

如何在 Python 中构建具有以下结果的单个循环(可能是 for 循环)?

B1: 1
B2: 2
B3: 3

【问题讨论】:

  • 不要以假设答案的方式提出问题。 “我如何让一个循环执行这个操作?”比“如何编写执行此操作的for 循环?”更好。因为它使更广泛的可能答案合法化。 (当然,在这种情况下,for 循环确实是最合适的)。
  • (例如参见@ZdaR 的精彩回答,尽管展示了非常值得了解的技术,但可能因为不使用for 而被否决和自我删除)。
  • (另外,问题标题应该具有足够的描述性,以便有人可以说出您实际尝试执行的操作是什么,而不仅仅是您尝试使用哪种工具;我已尝试进行适当的编辑)。

标签: python


【解决方案1】:

在 Python 中同时迭代 2 个或更多可迭代对象的常用方法是使用 zip 函数,该函数创建一个元组列表。结果列表中的每个元组都包含来自每个可迭代对象的相应元素。

cell_list = ['B1', 'B2', 'B3']
cell_data = ['1', '2', '3']

for t in zip(cell_list, cell_data):
    print('%s: %s' % t)

输出

B1: 1
B2: 2
B3: 3

如果您更喜欢使用更现代的print 语法,请将打印行更改为:

print('{0}: {1}'.format(*t))

在高于 2.6 的 Python 版本中,您可以这样编写:

print('{}: {}'.format(*t))

【讨论】:

    【解决方案2】:

    最简单的方法是zip 列表并将dict 应用于结果:

    result = dict (zip (cell_list, cell_data))
    

    话虽如此,如果您绝对必须像问题标签所建议的那样使用for 循环,您可以遍历列表并将一个作为潜在键,另一个作为潜在值:

    result = {}
    for i in range(len(cell_list)):
        result[cell_list[i]] = cell_data[i]
    

    【讨论】:

      【解决方案3】:
      for index in range(len(cell_list)) :
           print cell_list[index] + ": " + cell_data[index] 
      

      请注意,此代码未经测试,因为我是通过手机发布的。

      它的作用是将范围对象与 for 循环一起使用,因此它将遍历从 0 到列表长度的值。因此,由于您的列表是并行的,您可以使用此索引来打印两个列表中的项目。

      【讨论】:

        【解决方案4】:
        >>> cell_list = ['B1', 'B2', 'B3']
        >>> cell_data = ['1', '2', '3']
        >>> for a, b in zip(cell_list, cell_data):
               print '{0}: {1}'.format(a, b)
        
        
        B1: 1
        B2: 2
        B3: 3
        

        【讨论】:

          【解决方案5】:

          这是一个使用 for 循环的解决方案:

          for i in range(len(cell_list)):
              print (cell_list[i] + ": " + cell_data[i])
          

          【讨论】:

          • 虽然这可行,但在 Python 中最好直接迭代可迭代对象而不是使用索引,除非您需要索引的数值来进行一些处理。见Is there a need for range(len(a))?
          猜你喜欢
          • 2014-02-01
          • 2019-11-28
          • 2014-02-15
          • 2013-10-07
          • 2022-06-11
          • 1970-01-01
          • 1970-01-01
          • 2021-04-21
          • 1970-01-01
          相关资源
          最近更新 更多