使用Python返回平方整数列表

7 投票
7 回答
30256 浏览
提问于 2025-04-16 12:17

我想写一个函数,这个函数可以接收一个整数列表,比如说 [1, 2, 3],然后返回一个新的列表,里面的数字是原来数字的平方,也就是 [1, 4, 9]。

我该怎么做呢?

PS - 就在我准备提交的时候,我发现 O'Reilly 的《学习Python》第14章似乎提供了我想要的解释(第358页,第4版)。

不过我还是很想看看还有什么其他的解决方案。

7 个回答

6

在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念,或者在写代码时犯了一些小错误。

比如,有些人可能会在使用某些功能时,不知道该怎么调用它们,或者不清楚它们的作用。这就像是你在使用一个新手机,可能不知道某个按钮的功能,导致你无法顺利使用手机。

在这种情况下,查看相关的文档或者在网上搜索解决方案是很有帮助的。就像你在找手机使用说明书一样,能帮助你更好地理解和使用这些功能。

总之,遇到问题时不要着急,慢慢查找资料,理解每个步骤,这样你就能更好地解决问题,提升自己的编程能力。

squared = lambda li: map(lambda x: x*x, li)
8

除了使用lambda和列表推导式,你还可以使用生成器。列表推导式在调用时会一次性计算出所有的平方,而生成器则是在你逐个遍历列表时,才会计算每个平方。对于输入数据量很大或者你只需要结果的一部分时,使用生成器会更好。

def generate_squares(a):
    for x in a:
        yield x**2 

# this is equivalent to above
b = (x**2 for x in a)
21

你可以(而且应该)使用 列表推导式

squared = [x**2 for x in lst]

map 对每个元素都要调用一次函数,虽然 lambda 表达式很方便,但用 maplambda 的方式通常比列表推导式要慢。

Python模式 - 一个优化的故事 值得一读。

撰写回答