2012-11-23 35 views
0

我是Python新手,來自PHP背景..給我留下了深刻的印象。有沒有從這個序列得到號碼列表的方式:在Python中生成一個簡單的數學序列

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

也就是說,如果i=2n=30

4, 6, 8, ..., 30

好吧,這是一個非常簡單的序列,但什麼是更普遍在功能上做這種事情的方式?

也許有一些很好的功能性編程方式呢?在PHP中,我認爲我會使一些函數具有某些變量和交互功能,但Python可能會更優雅地執行它?

非常感謝。

回答

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] 
+0

'range'不返回一個列表,你知道... –

+2

@BlaXpirit:在Python2它返回一個列表。在Python3中,它返回一個迭代器。 – unutbu

+1

這不完全正確。但無論如何,你應該指定你使用的是過時的Python版本。 –

0

Python有所謂List Comprehension一個很酷的功能。你可以用它做這樣的事情:

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