gpt4 book ai didi

python - 类型错误: 'int' 对象在映射函数中不可迭代

转载 作者:行者123 更新时间:2023-11-28 17:11:19 26 4
gpt4 key购买 nike

抱歉,我是 Python 编码新手。我在 PyCharm 中编写了这段代码:

lst_3 = [1, 2, 3]

def square(lst):
lst_1 = list()
for n in lst:
lst_1.append(n**2)

return lst_1


print(list(map(square,lst_3)))

我有这种类型的错误:TypeError: 'int' object is not iterable。我的代码有什么错误?

最佳答案

这里的问题是您对 map 的作用有误解。这是一个有代表性的例子。我创建了一个类似“身份”的函数,它只是回应一个数字并返回它。我会将此函数映射到一个列表,这样您就可以看到打印出来的内容:

In [382]: def foo(x):
...: print('In foo: {}'.format(x))
...: return x
...:

In [386]: list(map(foo, [1, 2, 3]))
In foo: 1
In foo: 2
In foo: 3
Out[386]: [1, 2, 3]

注意这里列表中的每个元素通过map传递给foo 依次foo 没有收到列表。你的错误是认为它确实如此,所以你试图迭代一个数字,这导致了你看到的错误。

在您的情况下,您需要做的是像这样定义 square:

In [387]: def square(x):
...: return x ** 2
...:

In [388]: list(map(square, [1, 2, 3]))
Out[388]: [1, 4, 9]

square 应该在接收标量的假设下工作。

或者,您可以使用 lambda 来达到同样的效果:

In [389]: list(map(lambda x: x ** 2, [1, 2, 3]))
Out[389]: [1, 4, 9]

请记住,这是函数式编程的做法。作为引用,使用列表理解会更便宜:

In [390]: [x ** 2 for x in [1, 2, 3]]
Out[390]: [1, 4, 9]

关于python - 类型错误: 'int' 对象在映射函数中不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com