Python列表理解理解

时间:2014-06-25 16:00:27

标签: python list list-comprehension

我在帮助下编写了一些代码,我试图理解特定行的含义:

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

我理解这是一个列表理解,它取值列表中的值,减去等于另一个变量i的最后2个值。

[0]在这种情况下做了什么?

1 个答案:

答案 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

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

这只会迭代List,直到找到与测试匹配的第一个f,而不是首先生成所有这样的匹配,然后再次丢弃列表对象。 / p>