【问题标题】:How can I use a for iterator as a function parameter in Python?如何在 Python 中使用 for 迭代器作为函数参数?
【发布时间】:2020-03-09 23:34:33
【问题描述】:

我正在尝试调用一个从用户输入创建矩阵的函数,但它说我还没有定义一些东西。

lstA = []
lstB = []
lstC = []

def get_list(data):
    lst = []
    for i in range(4):
        aux = []
        for j in range(4):
            aux.append(data)
        lst.append(aux)
    return lst

lstA = get_list(int(input(f'A i[{i}] j[{j}]: ')))
lstB = get_list(int(input(f'B i[{i}] j[{j}]: ')))
lstC = get_list(lstA[i][j] + lstB[i][j])

程序应该从用户那里获取两个 4x4 矩阵,将每个通知数字放入 lstA[i][j]lstB[i][j] 中。

最后,lstC 用于对AB 求和。

错误信息:

Traceback (most recent call last):
  File "<string>", line 13, in <module>
NameError: name 'i' is not defined

[Program finished]

我该如何解决这个问题?

【问题讨论】:

  • 您正在尝试使用在尚未调用的函数中定义的变量?那没有意义。请说明您的最终目标
  • 我希望程序采用 2 个矩阵并将它们相加成第三个。
  • lstAlstB 应该是矩阵吗? lstC 是总和?
  • smac89 是的,完全正确
  • smac89 已编辑 ^^

标签: python function for-loop matrix iterator


【解决方案1】:

要将数据读入矩阵,请编写如下函数:

def get_lst():
  mat = [[]] * 4
  for i in range(4):
    mat[i] = [0] * 4
    for j in range(4):
      mat[i][j] = int(input(f'mat[{i}][{j}]: '))
  return mat

此函数将要求用户输入矩阵的每个元素,并用用户输入的内容填充该位置。

现在你是这样使用它的:

lstA = get_lst()
lstB = get_list()

至于对矩阵的元素求和,参考这个answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 2018-10-31
    • 1970-01-01
    • 2011-05-25
    • 2013-12-13
    • 2020-10-29
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多