2012-05-05 48 views
2

我偶然發現了這一個班輪:「[float(n)-50 for n in range(100)]」 - 這是做什麼用的?

[float(n)-50 for n in range(100)] 

有人能告訴我這是什麼呢?它應該返回一個矢量的浮點值。

最佳, 的Marius

+0

如果您將它存儲在列表變量中然後打印,您可以很容易地看到該模式。 –

+1

你跑了幾次?它看起來像什麼?然後你用更簡單的等價物替換了一些零件...?沒有太多的理由*不*嘗試使用良好的REPL;沒有編譯或任何東西。 (另外,通過精心編寫的Python語言文檔的細讀將會讓你學到很多東西。) – 2012-05-05 16:31:35

+1

也許你應該告訴作者,這相當於'map(float,range(-50,50))',這是更多可讀。 –

回答

5

這是一個list comprehension,讀取「創建100個元素的列表,使得在索引n每個元件,設置元件等於n-50」。

+0

更多類似:創建元素列表爲float(n)-50,其中n從0到100 –

+0

@ralu當然也是正確的。也許更清楚。 –

+0

我喜歡「我的」解釋,因爲它從左至右讀取代碼爲「0」至「99」的代碼爲 –

2

這是一個list comprehension

列表解析提供了一個簡潔的方式來創建列表。通用 應用程序將創建新列表,其中每個元素是 的一些操作的結果,該操作應用於另一個序列的每個成員或可迭代的 ,或者創建滿足 特定條件的那些元素的子序列。

例如,假設我們要創建的方塊的列表,如:

>>> squares = [] 
>>> for x in range(10): 
...  squares.append(x**2) 
... 
>>> squares 
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 

我們可以得到同樣的結果:

squares = [x**2 for x in range(10)] 

這也相當於squares = map(lambda x: x**2, range(10)), 但它更簡潔可讀。

2

它的意思是一樣的:

[float(x) for x in range(-50, 50)] 

或(至少在Python 2):

map(float, range(-50, 50)) 

,如果你知道名單是如何推導或map功能,是不言自明工作:他們將整數範圍-50...50轉換爲浮點列表(高50是唯一的)。結果是列表:

[-50.0, -49.0 ... 49.0] 
相關問題