我偶然發現了這一個班輪:「[float(n)-50 for n in range(100)]」 - 這是做什麼用的?
[float(n)-50 for n in range(100)]
有人能告訴我這是什麼呢?它應該返回一個矢量的浮點值。
最佳, 的Marius
我偶然發現了這一個班輪:「[float(n)-50 for n in range(100)]」 - 這是做什麼用的?
[float(n)-50 for n in range(100)]
有人能告訴我這是什麼呢?它應該返回一個矢量的浮點值。
最佳, 的Marius
這是一個list comprehension,讀取「創建100個元素的列表,使得在索引n
每個元件,設置元件等於n-50」。
更多類似:創建元素列表爲float(n)-50,其中n從0到100 –
@ralu當然也是正確的。也許更清楚。 –
我喜歡「我的」解釋,因爲它從左至右讀取代碼爲「0」至「99」的代碼爲 –
這是一個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))
, 但它更簡潔可讀。
它的意思是一樣的:
[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]
如果您將它存儲在列表變量中然後打印,您可以很容易地看到該模式。 –
你跑了幾次?它看起來像什麼?然後你用更簡單的等價物替換了一些零件...?沒有太多的理由*不*嘗試使用良好的REPL;沒有編譯或任何東西。 (另外,通過精心編寫的Python語言文檔的細讀將會讓你學到很多東西。) – 2012-05-05 16:31:35
也許你應該告訴作者,這相當於'map(float,range(-50,50))',這是更多可讀。 –