[英]Python list comprehension understanding
我在幫助下編寫了一些代碼,並且試圖了解特定行的含義:
rec = [f[0:-2] for f in List if f[-1] == i][0]
我知道這是一個列表推導,它采用列表中的值,當等於另一個變量i時減去最后2個值。
在這種情況下, [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()
與生成器表達式一起使用 :
rec = next(f[:-2] for f in List if f[-1] == i)
這只會遍歷List
直到找到與測試匹配的第一個f
,而不是首先產生所有此類匹配,然后再次丟棄list對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.