列出函数输出给定的元素

时间:2018-08-27 04:21:26

标签: python python-3.x list function iterator

在下面给出的代码中,我编写了两个函数。第二个应用第一个功能。我试图看看是否有可能对第一个函数的元素进行迭代。

这是代码:

regex

我想要的结果是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到[[0], [1], [2], [3], [4], [5]]的所有数字,但是对于我开发的实际代码,这与我要解决的问题有关

我收到的错误消息是:

m-1

3 个答案:

答案 0 :(得分:1)

def numbers(n):
    #for m in range(n):
    #    print(m)
    return range(n)


def sets(n):
    r=[]
    for e in numbers(n):
      r.append([e])
    return r

print(sets(6))

输出:

[[0], [1], [2], [3], [4], [5]]

Pythonic解决问题的方法如下-一根衬里

def create_list(n):
    return [[x] for x in range(n)] # Important one liner

print(create_list(5))

答案 1 :(得分:1)

对于数字(n)中的e的

返回无,因为您无法遍历无。这意味着什么也没找到。这可能会解决问题

def sets(n):
    r=[]
    for e in numbers(n) or []:    
        r.append([e])  
    return r      

print(sets(6))

此外,请在第一部分尝试

def numbers(n):  
    return range(n)

答案 2 :(得分:1)

您的numbers函数除了打印输入外,对输入不执行任何操作。不幸的是,打印不会在功能本身之外产生副作用。您可以使用许多修复程序。

最Python的方法是构建生成器,而不是常规函数:

def numbers(n):
    for m in range(n):
        yield m

或更简单地

def numbers(n):
    yield from range(n)

效率高得多,但只要正确返回即可构造整个可迭代对象的有效性:

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)