在Python中生成一个简单的数学序列

时间:2012-11-23 22:12:46

标签: python functional-programming

我是Python的新手,来自PHP背景......我印象深刻。有没有办法从这个序列中获取数字列表:

i^2, i^2 + i, i^2 + 2i, ..., n

即。如果i=2n=30

4, 6, 8, ..., 30

好的,这是一个非常简单的序列,但是在功能上做这种事情的更通用的方法是什么?

也许有一些很好的函数式编程方式可以做到这一点?在PHP中,我认为我会在函数中创建一些变量和交互,但Python可能能够更优雅地完成它吗?

非常感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用range执行此操作:

In [186]: i = 2; n = 30; range(i**2, n+1, i)
Out[186]: [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]

答案 1 :(得分:0)

Python有一个名为List Comprehension的很酷的功能。您可以使用它来执行以下操作:

[i*i+2*n for n in range(30) if (i*i+2*n)<=30]