有没有一种更简洁的方法来获得第一次出现的东西?

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)&gt;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) &gt; 2).next()

以上是关于有没有一种更简洁的方法来获得第一次出现的东西?的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种更简洁的 Dapper 方法来仅更新随 Dapper 更改的列?

是否有一种更简洁的方法可以在 c++(11) 中复制具有多类型值的 unordered_map

一种更高查询性能的列存储方式MaxMinT 第一部分

有没有一种更简单的方法来为给定 if 条件的变量分配值 - Python?

this对象原型

在一个 catch 块中捕获多种异常类型