Python 列出函数';s输出
在下面给出的代码中,我编写了两个函数。第二个应用第一个函数。我试图看看是否有可能对第一个函数的元素进行迭代 代码如下:Python 列出函数';s输出,python,python-3.x,list,function,iterator,Python,Python 3.x,List,Function,Iterator,在下面给出的代码中,我编写了两个函数。第二个应用第一个函数。我试图看看是否有可能对第一个函数的元素进行迭代 代码如下: def numbers(n): for m in range(n): print(m) def sets(n): r=[] for e in numbers(n): r.append([e]) return r sets(6) 我想要的结果是[[0]、[1]、[2]、[3]、[4]、[5]] 我知道还有其他方法(
def numbers(n):
for m in range(n):
print(m)
def sets(n):
r=[]
for e in numbers(n):
r.append([e])
return r
sets(6)
我想要的结果是[[0]、[1]、[2]、[3]、[4]、[5]]
我知道还有其他方法(不定义函数)可以获得从0到m-1的所有数字,但对于我开发的实际代码,这与我试图解决的问题有关
我收到的错误消息是:
'NoneType' object is not iterable
输出:
[[0], [1], [2], [3], [4], [5]]
解决问题的python方法如下-一行
def create_list(n):
return [[x] for x in range(n)] # Important one liner
print(create_list(5))
输出:
[[0], [1], [2], [3], [4], [5]]
解决问题的python方法如下-一行
def create_list(n):
return [[x] for x in range(n)] # Important one liner
print(create_list(5))
对于数字中的e(n),返回None,因为您不能在None上循环。这意味着什么也没找到。这可能会解决问题
def sets(n):
r=[]
for e in numbers(n) or []:
r.append([e])
return r
print(sets(6))
另外,请在第一部分中尝试此方法
def numbers(n):
return range(n)
对于数字中的e(n),返回None,因为您不能在None上循环。这意味着什么也没找到。这可能会解决问题
def sets(n):
r=[]
for e in numbers(n) or []:
r.append([e])
return r
print(sets(6))
另外,请在第一部分中尝试此方法
def numbers(n):
return range(n)
您的numbers
函数除了打印输入之外,没有对输入执行任何操作。不幸的是,打印在功能本身之外不会产生副作用。您有许多可用的修复程序
最具吸引力的是构建一个生成器,而不是一个常规函数:
def numbers(n):
for m in range(n):
yield m
或者更简单地说
def numbers(n):
yield from range(n)
只要返回正确,构建所需的整个iterable的效率要低得多,但也同样有效:
def numbers(n):
value = []
for m in range(n):
value.append(m)
return value
或者更有效地:
def numbers(n):
value = [m for m in range(n)]
return value
或微不足道
def numbers(n):
return range(n)
您的numbers
函数除了打印输入之外,没有对输入执行任何操作。不幸的是,打印在功能本身之外不会产生副作用。您有许多可用的修复程序
最具吸引力的是构建一个生成器,而不是一个常规函数:
def numbers(n):
for m in range(n):
yield m
或者更简单地说
def numbers(n):
yield from range(n)
只要返回正确,构建所需的整个iterable的效率要低得多,但也同样有效:
def numbers(n):
value = []
for m in range(n):
value.append(m)
return value
或者更有效地:
def numbers(n):
value = [m for m in range(n)]
return value
或微不足道
def numbers(n):
return range(n)
numbers(n)
没有为要迭代的循环返回任何内容。当您提供错误消息时,指示行很重要。最好的方法是提供堆栈跟踪numbers(n)
不会为for
循环返回任何要迭代的内容。当提供错误消息时,指示行很重要。最好的方法是提供一个堆栈跟踪服务器来修复缩进考虑修复缩进