return 给定号码的列表

return a list for the given number

我知道如何使用追加将项目分配给空数组:

matri=[]
def matr_meth(n):
 
  for i in range(1,n+1):
    matri.append(i)
  return matri  

print(matr_meth(6))

但在这里我看到了另一种方式,我不明白我们如何将索引分配给数组 matri +=[i] 的名称,如果 matri[i] =i+1 例如,我会得到它因为 alawys 数组可能与 c 和 c++ 之类的索引进行比较,第二个在新方法中,如果我在方法之前定义 matri=[] 就像我在追加方式中所做的那样,它将不起作用:

def matr_meth(n):
  matri=[]
  for i in range(1,n+1):
    matri +=[i]
  return matri  

print(matr_meth(6))

您在这里偶然发现了两个相关但截然不同的问题。让我们从第一个开始。 [i] 本身不是数组下标运算符。这是一个包含一个元素的列表。所以

matri += [i]

真的只是

matri = matri + [i]

或者,更详细地说,

my_temporary_list = [i]
matri = matri + my_temporary_list

+ 在要连接的列表上定义。所以这只是将两个列表放在一起的一种更奇特的方式。它在这个例子中并不是很有用(如果我只有一个元素要追加,我肯定会使用 .append),但是如果你有一个完整的列表(其长度可能大于一个),将它追加到一去。例如,您的 for 循环

for i in range(1,n+1):
  matri +=[i]

其实可以写成

matri += range(1, n + 1)

+= on list 可以将任何可迭代对象(例如 range)作为参数。

现在回答你的第二个问题。

def matr_meth(n):
  matri=[]
  for i in range(1,n+1):
    matri += [i]
  return matri

这里,matrimatr_meth中的局部变量。

matri=[]
def matr_meth(n):
  for i in range(1,n+1):
    matri.append(i)
  return matri

这里,matri是一个全局变量,简单明了。它变得模糊的地方是

matri=[]
def matr_meth(n):
  for i in range(1,n+1):
    matri += [i]
  return matri

现在我们在函数内部和外部都分配给 matri(请记住,+= 只是 =+ 的快捷方式)。所以 Python 可以合理地假设 matri 是一个全局变量,或者它可以合理地假设您打算在函数内部创建一个新的局部变量。为了避免 action-at-a-distance 错误,Python 做出保守的选择,假设您的意思是 matri 是一个新的局部变量。由于在这种情况下您的意图相反,因此只需使用 global 关键字。

matri=[]
def matr_meth(n):
  global matri
  for i in range(1,n+1):
    matri += [i]
  return matri
def matr_meth(n):
  matri=[]
  for i in range(1,n+1):
    matri += [i]
  return matri  

您将matri=[]初始化为一个空列表,这是一个列表。 [i] 也是一个列表。如果在两个列表之间应用 + 运算符,实际上是将第二个列表附加到第一个列表。

在 for 循环中,您将每个 [i] 附加到 matrimatri在for循环中不断变化。可以使用打印功能查看。

def matr_meth(n):
  matri=[]
  for i in range(1,n+1):
    matri += [i] 
    print('At the '+str(i)+'-th iteration, matri is: ' )
    print(matri)      
  return matri  


matr_meth(6)

输出:

At the 1-th iteration, matri is: 
[1]
At the 2-th iteration, matri is: 
[1, 2]
At the 3-th iteration, matri is: 
[1, 2, 3]
At the 4-th iteration, matri is: 
[1, 2, 3, 4]
At the 5-th iteration, matri is: 
[1, 2, 3, 4, 5]
At the 6-th iteration, matri is: 
[1, 2, 3, 4, 5, 6]