Python中的简单列表函数

时间:2017-09-02 17:57:33

标签: python list

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

x = []

def test():
    while x in range(0,100):
        if x % 2 == 0:
            x.append()
print(test())

6 个答案:

答案 0 :(得分:4)

  1. 使用for来迭代范围 - 而不是while

  2. 你对x有不明确的含义 - 作为迭代变量和列表。

  3. 您需要将值传递给append

  4. 您需要返回一个值,以便通过print语句打印 - 否则None是默认值。

  5. 修正:

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

    其他说明:

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

    • [x for x in range(100) if x % 2 == 0]这样的列表理解会好得多。

答案 1 :(得分:2)

问题和修复

您的代码有几个问题:

  • 您将列表x和您的迭代变量x命名为。
  • 您永远不会在列表中附加值。
  • 您永远不会从test返回列表。而不是append到全局列表,在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())

答案 2 :(得分:2)

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

def test(x):
    ...
    return x

while x in range(0, 100)无法正常工作,因为它会检查x对象中是否包含range(空列表)。但是range只包含数字,因此while循环体永远不会执行。所以你可以使用for - 循环代替:

def test(x):
    for i in range(0, 100):
        if i % 2 == 0:
            x.append(i)
    return x

但您也可以使用range支持step的事实,并使用if删除step=2

def test(x):
    for i in range(0, 100, 2):
        x.append(i)
    return x

此时你甚至可以extend(追加一个可迭代的)列表:

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

答案 3 :(得分:1)

您还可以使用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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您应该更改列表变量或迭代变量(while循环中的x)。和append函数的工作方式如下list.append(value)