2014-06-25 188 views
0

我寫了一些代碼的幫助,我試圖瞭解一個特定的線是指:Python列表理解理解

rec = [f[0:-2] for f in List if f[-1] == i][0] 

我明白這是SA列表理解這需要在列表中的值,減去最後一個2等於另一個變量i。

[0]在這種情況下做什麼?

回答

3

這是從結果列表對象中抓取第一個過濾元素的低效方法。

[f[0:-2] for f in List if f[-1] == i] 

是列表理解,產生一個新的列表對象。然後用[0]索引該對象以獲得第一個值。

您可以將其改寫爲:

tmp = [f[0:-2] for f in List if f[-1] == i] 
rec = tmp[0] 
del tmp 

,並得到同樣的結果。

的有效方法將是使用next()generator expression:過List

rec = next(f[:-2] for f in List if f[-1] == i) 

這僅迭代,直到第一f發現,測試匹配,而不是首先生產所有這樣的匹配,則再次丟棄列表對象。

+0

謝謝你,很好地解釋。我應該提到這是for循環的一部分,它正在迭代另一個列表,所以可能比我描述的更有效。再次感謝。 – user2883489