【发布时间】:2021-06-13 00:41:11
【问题描述】:
如何使用 python 中的 reduce() 函数在列表中搜索键?据我所知,它只对求和有用。
【问题讨论】:
-
如果您看到它“只对求和有用”,那么为什么要问如何使用它进行搜索呢?既然有更好的选择,为什么还要使用
reduce?
如何使用 python 中的 reduce() 函数在列表中搜索键?据我所知,它只对求和有用。
【问题讨论】:
reduce?
reduce(lambda x, y: x if x == 7 else y, some_list, None)
如果some_list 包含7,这将返回7。这里的逻辑基本上是您将累加器用作结果的持有者。如果你找到了你要找的任何东西,你就传递它,否则你传递“累加器”,知道它已经包含找到的值或者它开始的任何值。
注意:我们不是来做你的课程的。展示您尝试过的方法。
【讨论】:
您可以使用 reduce 选择性地将满足您搜索条件的元素附加到结果列表中:
from functools import reduce
L = ['Apple','Banana','Orange','Grape']
sr = reduce(lambda a,s: a+[s]*('n' in s),L,[]) # items containing 'n'
print(sr)
['Banana', 'Orange']
初始值是一个空列表(lambda 的a 参数)。如果 L 的每个元素(s 参数)包含“n”,则将其添加到结果列表中。 [s]*('n' in s) 将包含s 的单项列表乘以条件检查的结果('n' in s),得到一个空列表(当不满足条件时)或包含s 的列表,然后将其连接起来与累积结果 (a)
【讨论】:
import functools
lis = [ 1 , 3, 5, 6, 2, ]
print ("The sum of the list elements is : ",end="")
print (functools.reduce(lambda a,b : a+b,lis))
print ("The maximum element of the list is : ",end="")
print (functools.reduce(lambda a,b : a if a > b else b,lis))
【讨论】:
您不需要reduce。只需使用:
key in my_list
【讨论】: