2014-06-25 194 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