当前位置: 首页 > 面试题库 >

返回符合条件的列表中的第一项

丁文轩
2023-03-14
问题内容

我有一个功能。matchCondition(a),它接受一个整数并返回True或False。

我有10个整数的列表。我想返回列表中的第一个项目(与原始列表的顺序相同),该项目已matchCondition返回True。

尽可能地Python。


问题答案:

next(x for x in lst if matchCondition(x))

应该可以,但是StopIteration如果列表中的所有元素都不匹配,它将提高。您可以通过提供第二个参数来抑制这种情况next

next((x for x in lst if matchCondition(x)), None)

None如果没有匹配项,它将返回。

演示:

>>> next(x for x in range(10) if x == 7)  #This is a silly way to write 7 ...
7
>>> next(x for x in range(10) if x == 11)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> next((x for x in range(10) if x == 7), None)
7
>>> print next((x for x in range(10) if x == 11), None)
None

最后,为了完整起见,如果您希望列表中 所有 匹配的项,那么内置filter函数就是为了:

all_matching = filter(matchCondition,lst)

在python2.x中,它返回一个列表,但是在python3.x中,它返回一个可迭代的对象



 类似资料:
  • 问题内容: 如何获取与流中的条件匹配的第一个元素?我已经尝试过了但是没用 该条件不起作用,在除Stop之外的其他类中调用filter方法。 问题答案: 这可能是您要寻找的: 一个例子: 输出为:

  • 这就是我的问题所在(在MS SQL SMS 2008 R2): 我有两个表: table1和列id1 name1 table2和列id2 name2 我还有第三个临时表,这些表是由导入的xls创建的,列为name1,name2 我希望使用select,这将导致类似于临时表的副本,但使用id1,id2而不是name1,name2。 这可能吗?

  • 我正在尝试验证提取列表中的第一项。但是,AssertJ返回一个而不是从返回预期的对象。 给定以下示例

  • 问题内容: 假设我有一个s的列表: 我想返回满足一定条件的元素的列表,例如: 在for中 返回元素的子元素的Python方法是什么? 天真的方法: 有没有一种简单的方法可以执行此操作,也许具有列表理解或函数,而没有临时的? 问题答案: 使用清单理解, 或者您可以使用也, 您实际上可以使用Python的真实语义编写相同的条件,例如 另外,您也可以使用功能与你的,像这样的

  • 我在Python中进行多元线性回归,但由于某种原因,系数没有正确返回为列表。相反,将返回列表中的列表: 这将返回列表[]的列表中的值,而不是列表[]。知道为什么会这样吗?输出: 但这行得通: 输出:

  • 问题内容: 我想从符合条件的列表中获得第一项。重要的是,生成的方法不能处理整个列表,这可能会很大。例如,以下功能是足够的: 可以使用以下功能: 但是,我想不出一个好的内置式/单层式来让我做到这一点。如果不需要,我特别不想复制此功能。是否有内置的方法来获取与条件匹配的第一项? 问题答案: 在Python 2.6或更高版本中: 如果在找不到匹配元素的情况下希望被引发: 如果你希望返回(例如None),