【问题标题】:return a list for the given number返回给定数字的列表
【发布时间】:2022-02-01 03:47:22
【问题描述】:

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

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 用于 exaple cuz alawys,我会得到它数组可能会与 c 和 c++ 之类的索引进行比较,第二个在新方法中,如果我在方法之前定义 matri=[] 将不起作用,就像我在附加方式中所做的那样:

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

print(matr_meth(6))

【问题讨论】:

    标签: python arraylist


    【解决方案1】:

    您在这里偶然发现了两个相关但截然不同的问题。让我们从第一个开始。 [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)
    

    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 是一个全局变量,或者它可以合理地假设您打算在函数内部创建一个新的局部变量。为了避免远距离操作错误,Python 做出保守的选择,假设您的意思是 matri 是一个新的局部变量。由于您在这种情况下打算相反,因此只需使用 global 关键字。

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

    【讨论】:

      【解决方案2】:
      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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2020-10-22
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        相关资源
        最近更新 更多