【问题标题】:How to write a 2D list with increasing numbers using a for loop如何使用 for 循环编写数字增加的二维列表
【发布时间】:2022-01-07 08:52:30
【问题描述】:

我可以使用内部具有相同值的 for 循环编写一个二维列表,例如:

list = [[0 for x in range(4)] for y in range(4)]

我得到了结果:

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

但是我怎样才能写出类似的东西来获得增加数字的结果呢? 输出应该是这样的:

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]

谢谢!

【问题讨论】:

  • 那些不是循环,它们是列表推导。如果您在编写嵌套列表推导时遇到问题,通常的方法是首先将其编写为嵌套循环。然后将代码转换为理解,如果它可以可读的话。

标签: python list for-loop 2d


【解决方案1】:

你可以使用:

cols = 4
rows = 4
[[x+y*cols for x in range(cols)] for y in range(rows)]

或者,使用numpy.arange

import numpy as np
rows = 3
cols = 5
np.arange(rows*cols).reshape((rows, cols)).tolist()

输出:

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]

【讨论】:

    【解决方案2】:

    你可以通过这个列表理解来实现:

    L = [[x for x in range(y,y+4)] for y in range(0,16,4)]
    

    【讨论】:

      【解决方案3】:

      你可以这样实现:

      l = [[x + 3*y +y  for x in range(4)] for y in range(4)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-02
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多