【问题标题】:How to execute a function to every item in a range如何对范围内的每个项目执行函数
【发布时间】:2018-04-02 12:45:23
【问题描述】:

在调用下面的函数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]())

【问题讨论】:

  • for f in count(): print(f())?
  • 即使我们遵循“jonrsharpe”的更正。结果执行将引用“i”,并将在您的调用中呈现值,在您的情况下始终为 3。因此所有电话的回答都是 9。我相信你不想要这个。请详细说明。

标签: python list function


【解决方案1】:

您可以使用map 将函数应用于迭代中的每个项目。结果,在 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2021-06-29
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多