返回大于某个阈值的列表中的最后一个元素
Returning the last element in a list larger than some threshold
假设我们在 Python 中有以下列表:
[1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]
我们怎样才能 return 被认为是 >=4
的最后一个元素?
我尝试执行 for 循环并查找索引,但感觉除了得到意想不到的结果之外我经历了一些混乱,并且认为可能有更简单的方法来解决它。
谢谢。
用reversed
反转lst
,调用next
。
next(i for i in reversed(lst) if i >= 4)
8
这是高效的,因为它只迭代它需要的最小数量,return一个结果。这相当于:
for i in reversed(lst):
if i >= 4:
break
print(i)
8
经常会发生不存在满足您的条件的元素,因此 next
与 return 完全没有任何关系。在这种情况下,next
returns a StopIteration
你可以通过使用默认参数调用函数来避免 -
next((i for i in reversed(lst) if i >= 4), None)
which returns None
if 没有元素满足条件 i >= 4
.
你可以试试:
>>> x = [1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]
>>> x1 = []
>>> num = 4
>>> for i in x:
... if i >= num:
... x1.append(i)
...
>>> print(x1)
[4, 5, 4, 6, 9, 4, 8, 4, 4, 4, 8]
>>> max(x1)
9
假设我们在 Python 中有以下列表:
[1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]
我们怎样才能 return 被认为是 >=4
的最后一个元素?
我尝试执行 for 循环并查找索引,但感觉除了得到意想不到的结果之外我经历了一些混乱,并且认为可能有更简单的方法来解决它。
谢谢。
用reversed
反转lst
,调用next
。
next(i for i in reversed(lst) if i >= 4)
8
这是高效的,因为它只迭代它需要的最小数量,return一个结果。这相当于:
for i in reversed(lst):
if i >= 4:
break
print(i)
8
经常会发生不存在满足您的条件的元素,因此 next
与 return 完全没有任何关系。在这种情况下,next
returns a StopIteration
你可以通过使用默认参数调用函数来避免 -
next((i for i in reversed(lst) if i >= 4), None)
which returns None
if 没有元素满足条件 i >= 4
.
你可以试试:
>>> x = [1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]
>>> x1 = []
>>> num = 4
>>> for i in x:
... if i >= num:
... x1.append(i)
...
>>> print(x1)
[4, 5, 4, 6, 9, 4, 8, 4, 4, 4, 8]
>>> max(x1)
9