[英]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.