如何对范围中的每个项执行函数

时间:2018-04-02 12:45:24

标签: python list function

我在调用下面的函数count()后得到了一个函数列表。我想知道如何在我的代码中使用这种方式来执行这些函数。

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

print(count()[0](), count()[1](), count()[2]())

1 个答案:

答案 0 :(得分:0)

您可以使用map将函数应用于iterable中的每个项目。 Python 3.x中的结果是可迭代的。

有几种不同的方法可以提取结果。以下是一个例子。

我还纠正了你逻辑中的一些错误。您的函数f应该使用一个参数,大概是i,因为它在您的函数中使用。同样,您似乎希望函数count采用参数n来确定您的输入范围。

def count(n):
    def f(i):
        return i*i
    return map(f, range(1, n))

## iterate using next
res = count(5)

print(next(res))  # 1
print(next(res))  # 4
print(next(res))  # 9

## iterate using for loop
for k in count(4):
    print(k)
# 1
# 4
# 9

## build list and exhaust all results
print(list(count(4)))
# [1, 4, 9]