【问题标题】:Creating a list using for and list comprehension使用 for 和列表推导创建列表
【发布时间】:2019-12-21 16:32:24
【问题描述】:

我想创建一个数字列表,即:

[[1,2,3,..,n]
[n+1,n+2,...,2n]
...
[n*(m-1)+1, n*(m-1)+2,..., n*m]]

例如,对于 m==2 和 n==3,输出将是:

[[1,2,3]
[4,5,6]]

我实现了使用以下方法创建这样的列表:

Result=[]
List=[]
for i in range(1,n*m+1):
    if (i)%(n+1)==0:
        Result.append(List)
        List=[]
        print(i)

    List.append(i)
Result.append(List)
print(Result)

但是有没有更简单的方法呢?也许使用列表理解?

感谢您的帮助

【问题讨论】:

    标签: python list for-loop list-comprehension


    【解决方案1】:

    这可能是你的答案:

    [list(range(j-n+1, j+1)) for j in range(n, n*m+1, n)]
    

    输入

    n = 3
    m = 3
    

    输出:

    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    

    【讨论】:

      【解决方案2】:

      您可以使用列表推导:

      n = 4
      m = 5
      
      [list(range(1+k*n, 1+(k+1)*n)) for k in range(m+1)]
      

      输出:

      [[1, 2, 3, 4],
       [5, 6, 7, 8],
       [9, 10, 11, 12],
       [13, 14, 15, 16],
       [17, 18, 19, 20],
       [21, 22, 23, 24]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 2021-10-22
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        相关资源
        最近更新 更多