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
循环返回任何要迭代的内容。当提供错误消息时,指示行很重要。最好的方法是提供一个堆栈跟踪服务器来修复缩进考虑修复缩进