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