有没有一种更简洁的方法来获得第一次出现的东西?
Posted
技术标签:
【中文标题】有没有一种更简洁的方法来获得第一次出现的东西?【英文标题】:Is there a neater way to get the first occurrence of something? 【发布时间】:2010-05-04 10:00:58 【问题描述】:我有一个包含许多东西的列表:
lista = ['a', 'b', 'foo', 'c', 'd', 'e', 'bar']
我想获取列表中满足谓词的第一项,例如len(item) > 2
。有没有比 itertools 的 dropwhile 和 next 更简洁的方法?
first = next(itertools.dropwhile(lambda x: len(x) <= 2, lista))
一开始我确实使用了[item for item in lista if len(item)>2][0]
,但这需要python首先生成整个列表。
【问题讨论】:
【参考方案1】:>>> lista = ['a', 'b', 'foo', 'c', 'd', 'e', 'bar']
>>> next(i for i in lista if len(i) > 2)
'foo'
【讨论】:
请注意,下一个功能是在 2.6 中添加的。如果您需要与 2.5 或 2.4 兼容,请使用(i for i in lista if len(i) > 2).next()
以上是关于有没有一种更简洁的方法来获得第一次出现的东西?的主要内容,如果未能解决你的问题,请参考以下文章
是否有一种更简洁的 Dapper 方法来仅更新随 Dapper 更改的列?
是否有一种更简洁的方法可以在 c++(11) 中复制具有多类型值的 unordered_map