【问题标题】:Iterating bidimensional array/list with only one for (Python) [duplicate]迭代二维数组/列表,只有一个用于(Python)[重复]
【发布时间】:2015-06-02 21:41:25
【问题描述】:

不要这样做:

for x in range(500):
    for y in range(300):
        print x,y

我该怎么做?

for x,y in range(500),range(300):
    print x,y

【问题讨论】:

    标签: python performance for-loop


    【解决方案1】:

    我会使用itertools.product

    from itertools import product
    for x, y in product(range(500), range(300)):
        print x, y
    

    【讨论】:

      【解决方案2】:

      使用列表理解:

      pairs = [ (i,j) for i in range(300) for j in range(300) ]
      print pairs
      

      这是我运行的测试:

      print [ (i,j) for i in range(3) for j in range(3) ]
      

      输出

      [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
      

      使用 itertools 的产品

      print [ (i,j) for i, j in itertools.product(range(300), range(300))]
      

      【讨论】:

      • zip 不是只适用于相同大小的列表吗?此外,我更喜欢采用我所说的格式,因为我需要在那里做很多事情,而且列表理解有点有限,因为我只能放一行代码。
      • 是的,我改变了答案,因为zip 没有按照你的要求做。
      猜你喜欢
      • 2013-05-09
      • 1970-01-01
      • 2011-12-28
      • 2015-04-04
      • 2023-02-22
      • 2020-10-06
      • 2018-12-01
      • 2017-05-06
      • 2017-09-15
      相关资源
      最近更新 更多