【问题标题】:How to create a matrix - def createMatrix(rows: int, cols: int) in python如何在 python 中创建矩阵 - def createMatrix(rows: int, cols: int)
【发布时间】:2022-01-21 23:32:58
【问题描述】:

我的 Python 之旅已经 3 周大了。我遇到了这个练习,我需要使用函数创建一个二维矩阵。矩阵的行数和列数应在函数调用时在函数参数内传递,而矩阵元素应来自参数值的 range()。 我试图这样处理它:

def createMatrix(row, col):
    mat = []
    for in range(row):
        mat.append([])
        for in range(col):
|

这是我在卡住之前尝试的方法,我卡住了。任何帮助将不胜感激。

【问题讨论】:

  • 您需要在执行内部循环之前定义另一个列表,在内部循环的每次迭代中附加零(或任何您想要的),最后在内部循环之后将此列表附加到mat循环执行。
  • 您希望matrix 填充一些consecutive 数字吗?例如。 1、2、3……?或者只是0。上面的帖子为您指明了正确的方向。
  • 正是我想要的。
  • 我希望矩阵填充实数 0-9,用 range(row) 或 range(col) 指定

标签: python


【解决方案1】:

或者你也可以List Comprehension 方式:

def create_matrix(row, col):
    ''' create a 2D matrix by consecutive numbers - starting 1 - or change to whatever number in code

    '''

    matrix = [[ j + (col *i) for j in range(1, col+1)] # 1
                             for i in range(row)]

    return matrix

打印(create_matrix(4, 4))

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

【讨论】:

  • 您可以使用range() 使其更加清晰:[[i + j for j in range(col)] for i in range(1, row * col + 1, col)]。由于乘法只执行一次,它的效率应该会稍微高一些。
  • @OlvinR​​oght,对于初学者来说,这两个答案看起来都一样。我很高兴得到我想要的东西,但老实说,我不明白在循环后面使用 i 和 j 。这两个可能是python或其他东西识别的特殊内置字符。请向我提供文档,如果适用,我可以在其中详细了解它们。谢谢
  • @philipnyankena,这就是问题所在。您需要了解您正在使用的代码。我和丹尼尔使用了nested list comprehensionij 只是一个变量名。
  • 您可以尝试将代码转换为更简单的2 for-loops,以便您可以比较两种方式。试试这个平台 - pythontutor.com
  • @OlvinR​​oght,非常感谢。
【解决方案2】:

这将创建一个用 0 填充的 2d 矩阵:

def create_matrx(row, col):

    grid = []

    for row in range(col):

        row = [0 for _ in range(col)]

        grid.append(row)

    return grid

用给定的元素创建一个二维矩阵

def create_matrx(row, col,element):

    grid = []

    for row in range(col):

        row = [element for _ in range(col)]

        grid.append(row)

    return grid

创建一个用 0 填充到 row+col 的 2d 矩阵

def create_matrx(row, col):

    grid = []

    for row in range(col):

        row = [row+col for _ in range(col)]

        grid.append(row)

    return grid

【讨论】:

  • @OlvinR​​oght 谢谢你的回答,但我不明白你的意思是追加零
  • @philipnyankena,我的意思是 row.append(0)
  • @OlvinR​​oght,感谢它创建了一个填充了 0 个元素的二维矩阵。但是,如果我需要由函数参数指定的其他真实元素怎么办。例如:row=2 col=3
  • @philipnyankena 我 Gerda 回答不是 OlvinR​​oght xd
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 2019-10-31
  • 1970-01-01
  • 2017-03-17
  • 2019-03-23
  • 2014-03-19
相关资源
最近更新 更多