0
我寫了一些代碼的幫助,我試圖瞭解一個特定的線是指:Python列表理解理解
rec = [f[0:-2] for f in List if f[-1] == i][0]
我明白這是SA列表理解這需要在列表中的值,減去最後一個2等於另一個變量i。
[0]
在這種情況下做什麼?
我寫了一些代碼的幫助,我試圖瞭解一個特定的線是指:Python列表理解理解
rec = [f[0:-2] for f in List if f[-1] == i][0]
我明白這是SA列表理解這需要在列表中的值,減去最後一個2等於另一個變量i。
[0]
在這種情況下做什麼?
這是從結果列表對象中抓取第一個過濾元素的低效方法。
[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
發現,測試匹配,而不是首先生產所有這樣的匹配,則再次丟棄列表對象。
謝謝你,很好地解釋。我應該提到這是for循環的一部分,它正在迭代另一個列表,所以可能比我描述的更有效。再次感謝。 – user2883489