Python中的简单列表函数

Python中的简单列表函数,python,list,Python,List,如果数字可以被2整除,我尝试将值(x)附加到列表中,然后打印出该列表。看起来很简单。以下命令运行,但返回None: x = [] def test(): while x in range(0,100): if x % 2 == 0: x.append() print(test()) 使用for迭代一个范围-而不是while 对于x,您的含义不明确,既可以作为迭代变量,也可以作为列表 您需要将该值传递给append 您需要返回一个值,以便通过pr

如果数字可以被2整除,我尝试将值(
x
)附加到列表中,然后打印出该列表。看起来很简单。以下命令运行,但返回
None

x = []

def test():
    while x in range(0,100):
        if x % 2 == 0:
            x.append()
print(test())
  • 使用
    for
    迭代一个范围-而不是
    while

  • 对于
    x
    ,您的含义不明确,既可以作为迭代变量,也可以作为列表

  • 您需要将该值传递给
    append

  • 您需要返回一个值,以便通过print语句进行打印-否则默认值为
    None

  • 固定的:

    x = []
    
    def test():
        for i in range(0,100):
            if i % 2 == 0:
                x.append(i)
        return x
    
    print(test())
    
    其他说明:

    • 这个只能用一次。下一次调用
      test
      将返回一个两倍大小的列表,因为
      x
      是一个全局变量。我相信这是无意的,可以通过将
      x=[]
      放在函数中来解决

    • 如果x%2==0,那么像
      [x代表范围(100)内的x]
      这样的列表理解会更好

  • 使用
    for
    迭代一个范围-而不是
    while

  • 对于
    x
    ,您的含义不明确,既可以作为迭代变量,也可以作为列表

  • 您需要将该值传递给
    append

  • 您需要返回一个值,以便通过print语句进行打印-否则默认值为
    None

  • 固定的:

    x = []
    
    def test():
        for i in range(0,100):
            if i % 2 == 0:
                x.append(i)
        return x
    
    print(test())
    
    其他说明:

    • 这个只能用一次。下一次调用
      test
      将返回一个两倍大小的列表,因为
      x
      是一个全局变量。我相信这是无意的,可以通过将
      x=[]
      放在函数中来解决

    • 如果x%2==0,那么像
      [x代表范围(100)内的x]
      这样的列表理解会更好

    问题和修复 您的代码有几个问题:

    • 您将列表命名为
      x
      和迭代变量
      x
    • 您从不在列表中附加值
    • 您永远不会从
      test
      返回列表。在
      test
      中创建一个本地列表并返回该列表,而不是
      将其附加到全局列表中
    • 您使用的是
      while
      循环,而您应该使用
      for
      循环
    在进行上述更改后,您的代码看起来如下所示:

    def test():
        even_numbers = []
        for number in range(0, 100):
            if number % 2 == 0:
                even_numbers.append(number)
        return even_numbers
    
    print(test())
    
    改进 注意,有更好的方法可以做到这一点。在这种情况下,列表理解是更好的选择。列表理解可用于避免构建值列表的常见模式,例如您的案例:

    def test():
        return [n for n in range(0, 100) if n % 2 == 0]
    
    print(test())
    
    问题和修复 您的代码有几个问题:

    • 您将列表命名为
      x
      和迭代变量
      x
    • 您从不在列表中附加值
    • 您永远不会从
      test
      返回列表。在
      test
      中创建一个本地列表并返回该列表,而不是
      将其附加到全局列表中
    • 您使用的是
      while
      循环,而您应该使用
      for
      循环
    在进行上述更改后,您的代码看起来如下所示:

    def test():
        even_numbers = []
        for number in range(0, 100):
            if number % 2 == 0:
                even_numbers.append(number)
        return even_numbers
    
    print(test())
    
    改进 注意,有更好的方法可以做到这一点。在这种情况下,列表理解是更好的选择。列表理解可用于避免构建值列表的常见模式,例如您的案例:

    def test():
        return [n for n in range(0, 100) if n % 2 == 0]
    
    print(test())
    

    为简单起见,重命名内部x变量。使用x.append(n)代替x.append()。最后,打印变量而不是方法。

    为简单起见,请重命名内部x变量。使用x.append(n)代替x.append()。最后,打印变量而不是方法。

    您也可以使用步骤2来避免if测试:

    x = []
    def test():
       for i in range(0,100,2):
          x.append(i)
       return x
    
    或者使用列表:

    x = []
    def test():
       x = [i for i in range(0,100,2)]
       return x
    
    或者使用其自身的范围作为列表:

    x = []
    def test()
       x = list(range(0,100,2))
       return x
    

    您还可以使用步骤2来避免以下测试:

    x = []
    def test():
       for i in range(0,100,2):
          x.append(i)
       return x
    
    或者使用列表:

    x = []
    def test():
       x = [i for i in range(0,100,2)]
       return x
    
    或者使用其自身的范围作为列表:

    x = []
    def test()
       x = list(range(0,100,2))
       return x
    

    通常,应将变量传递给函数并从函数返回,而不是依赖全局变量:

    def test(x):
        ...
        return x
    
    但是,
    而范围(0,100)中的x将不起作用,因为它将检查
    x
    (空列表)是否包含在
    范围
    对象中。但是
    范围
    仅包含数字,因此
    while
    循环体将永远不会执行。因此,您可以使用
    来代替
    -循环:

    def test(x):
        for i in range(0, 100):
            if i % 2 == 0:
                x.append(i)
        return x
    
    但是,您也可以利用
    范围
    支持
    步骤
    的事实,只需使用
    步骤=2
    即可删除
    如果

    def test(x):
        for i in range(0, 100, 2):
            x.append(i)
        return x
    
    此时,您甚至可以
    扩展列表(在列表中添加一个iterable):

    def test(x):
        x.extend(range(0, 100, 2))
        return x
    

    通常,应将变量传递给函数并从函数返回,而不是依赖全局变量:

    def test(x):
        ...
        return x
    
    但是,
    而范围(0,100)中的x将不起作用,因为它将检查
    x
    (空列表)是否包含在
    范围
    对象中。但是
    范围
    仅包含数字,因此
    while
    循环体将永远不会执行。因此,您可以使用
    来代替
    -循环:

    def test(x):
        for i in range(0, 100):
            if i % 2 == 0:
                x.append(i)
        return x
    
    但是,您也可以利用
    范围
    支持
    步骤
    的事实,只需使用
    步骤=2
    即可删除
    如果

    def test(x):
        for i in range(0, 100, 2):
            x.append(i)
        return x
    
    此时,您甚至可以
    扩展列表(在列表中添加一个iterable):

    def test(x):
        x.extend(range(0, 100, 2))
        return x
    

    您应该更改列表变量或迭代变量(while循环中的x)。append函数的工作原理如下:append(value)

    您应该更改list变量或迭代变量(while循环中的x)。append函数的工作原理如下:append(value)

    返回列表它不能工作,
    append
    没有参数。另外,尝试
    list(range(0100,2))
    而不是这个繁琐的代码。返回列表它不能工作,
    append
    没有参数。另外,尝试
    list(range(0100,2))
    而不是这个繁琐的代码。您的问题忘记了