使用Python返回平方整数列表
我想写一个函数,这个函数可以接收一个整数列表,比如说 [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
表达式很方便,但用 map
加 lambda
的方式通常比列表推导式要慢。
Python模式 - 一个优化的故事 值得一读。