【问题标题】:Enumerate two python lists simultaneously?同时枚举两个python列表?
【发布时间】:2013-04-25 23:09:18
【问题描述】:

如何同时枚举两个长度相等的列表? 我确信必须有一种更 Pythonic 的方式来执行以下操作:

for index, value1 in enumerate(data1):
    print index, value1 + data2[index]

我想在 for 循环中使用索引和 data1[index] 和 data2[index]。

【问题讨论】:

    标签: python list


    【解决方案1】:

    对 Python2 和 Python3 使用 zip

    for index, (value1, value2) in enumerate(zip(data1, data2)):
        print(index, value1 + value2)  # for Python 2 use: `print index, value1 + value2` (no braces)
    

    请注意,zip 只能运行到两个列表中较短的一个(对于等长的列表来说不是问题),但是,如果您想遍历整个列表,那么如果您想遍历整个列表,请使用itertools.izip_longest

    【讨论】:

    • 感谢解决了zip(data1, data2).index(val1, val2)
    【解决方案2】:
    for i, (x, y) in enumerate(zip(data1, data2)):
    

    在 Python 2.x 中,您可能希望使用 itertools.izip 而不是 zip,尤其是。对于很长的列表。

    【讨论】:

    • 还有人讨厌enumerate 有九个字符吗?
    • @jamylak: 是的,所以也许应该命名为enu ;)
    • @larsmans 是的,它适合 zipmap!应该请求 Python 4 ;) ;)
    • @jamylak:不要忘记请求rangerng 以提供更强大的案例。哦,还有rpr
    • @StevenRumbalski:可读性第一! - enum() 被考虑但被拒绝:PEP 279
    【解决方案3】:
    from itertools import count
    
    for index, value1, value2 in zip(count(), data1, data2):
        print(index, value1, value2)
    

    来源:http://www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-zip-to/#c2603

    【讨论】:

      【解决方案4】:

      虽然这不是很清楚你在寻找什么,

      >>> data1 = [3,4,5,7]
      >>> data2 = [4,6,8,9]
      >>> for index, value in enumerate(zip(data1, data2)):
          print index, value[0]+value[1]
      
      
      0 7
      1 10
      2 13
      3 16
      

      【讨论】:

        【解决方案5】:

        既然已经提到长度相等,

        for l in range(0, len(a)):
           print a[l], b[l]
        

        【讨论】:

          【解决方案6】:

          假设你想使用zip:

             >>> for x in zip([1,2], [3,4]):
              ...     print x
              ... 
              (1, 3)
              (2, 4)
          

          【讨论】:

          • 循环内也需要索引。
          猜你喜欢
          • 2023-02-26
          • 2012-11-17
          • 2019-05-19
          • 1970-01-01
          • 2018-03-31
          • 2017-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多