【问题标题】:How can I use the reduce() function in python to search a list? [closed]如何在 python 中使用 reduce() 函数来搜索列表? [关闭]
【发布时间】:2021-06-13 00:41:11
【问题描述】:

如何使用 python 中的 reduce() 函数在列表中搜索键?据我所知,它只对求和有用。

【问题讨论】:

  • 如果您看到它“只对求和有用”,那么为什么要问如何使用它进行搜索呢?既然有更好的选择,为什么还要使用reduce

标签: python reduce


【解决方案1】:
reduce(lambda x, y: x if x == 7 else y, some_list, None)

如果some_list 包含7,这将返回7。这里的逻辑基本上是您将累加器用作结果的持有者。如果你找到了你要找的任何东西,你就传递它,否则你传递“累加器”,知道它已经包含找到的值或者它开始的任何值。

注意:我们不是来做你的课程的。展示您尝试过的方法。

【讨论】:

    【解决方案2】:

    您可以使用 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)

    【讨论】:

      【解决方案3】:
      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)) 
      

      【讨论】:

      • 这如何回答问题?
      【解决方案4】:

      您不需要reduce。只需使用:

      key in my_list
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-12
        • 2021-05-07
        • 2017-05-31
        • 2022-10-04
        • 1970-01-01
        • 2013-11-14
        • 1970-01-01
        • 2019-08-31
        相关资源
        最近更新 更多