我在帮助下编写了一些代码,我试图理解特定行的含义:
rec = [f[0:-2] for f in List if f[-1] == i][0]
我理解这是一个列表理解,它取值列表中的值,减去等于另一个变量i的最后2个值。
[0]
在这种情况下做了什么?
答案 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>