Python中的简单列表函数
如果数字可以被2整除,我尝试将值(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
x
)附加到列表中,然后打印出该列表。看起来很简单。以下命令运行,但返回None
:
x = []
def test():
while x in range(0,100):
if x % 2 == 0:
x.append()
print(test())
for
迭代一个范围-而不是while
x
,您的含义不明确,既可以作为迭代变量,也可以作为列表append
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
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))
而不是这个繁琐的代码。您的问题忘记了