python|高级函数|filter|map|reduce|sorted

filter(func, iterable)

  • 循环调用输入的函数
  • 过滤传入的参数,函数的结果返回的是true那就保存,返回false就不要,且返回的也是迭代器
  • 备注:
    • 迭代器用完一个就扔掉一个,直到全部用完;
    • 可以用list()转化为列表;不转化则返回的为迭代器对象,可以用for循环直接逐个调用
# utils/core.py convert_legacy_filters_into_adhoc()for filt in filter(lambda x: x is not None, fd[filters]):
    fd[‘adhoc_filters‘].append(to_adhoc(filt, ‘SIMPLE‘, clause))

map(func, iterable)|reduce(func, iterable)

  • map将传入的函数,依次作用到序列的每个元素上,并将结果作为新的迭代器返回
list(map(str, [1,2,3,4,5,6,7,8]))
  • reduce 将函数作用在序列上,该函数必须接受两个参数
  • 每次的计算结果将继续和下一个元素做累计计算
# 等效写法reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

# exampl_1from functionls import reducedef add(x, y):  return x + y

reduce(add, [1,3,5,7,9])
# exampl_2:把序列[1, 3, 5, 7, 9]变换成整数13579def fn(x,y):  return x*10 + yreduce(fn, [1,3,5,7,9])
# exampl_2:字符串str也是一个序列,将str转化为int
DIGITS = {‘0‘: 0, ‘1‘: 1, ‘2‘: 2, ‘3‘: 3, ‘4‘: 4, ‘5‘: 5, ‘6‘: 6, ‘7‘: 7, ‘8‘: 8, ‘9‘: 9}

def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(s):
        return DIGITS[s]
    return reduce(fn, map(char2num, s))
def char2num(s):
    return DIGITS[s]
#使用lambda简化内容
def str2int(s):
    return reduce(lambda x, y: x * 10 + y, map(char2num, s))

sorted(iterable, key=func)

  • 添加一个key函数,用来自定义排序;key指定的函数作用在list的每一个元素上,并根据返回的结果重新排序
# 默认升序排列sorted([36, 5, -12, 9, -21])# 按照绝对值排序sorted([36, 5, -12, 9, -21])  

# 默认按照ASCII的大小排序,‘Z’ < ‘a‘, 所以‘Z’排在前面sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘])# 实现忽略大小写的排序方法: 先将字符串全部转化为大写or小写sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘], key=str.lower)# 实现反向排序sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘], key=str.lower, reverse=True)
# 实现L的按照名称排序
L = [(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66), (‘Lisa‘, 88)]
sorted(L, key=lambda x: x[0])

原文地址:https://www.cnblogs.com/bennyjane/p/12696939.html

时间: 2024-11-07 05:52:29

python|高级函数|filter|map|reduce|sorted的相关文章

Python 内置函数&amp;filter()&amp;map()&amp;reduce()&amp;sorted()

常用内置函数 Python 2.x 返回列表,Python 3.x 返回迭代器 在进行筛选或映射时,输出的结果是一个数组,需要list帮助. 如:print(list(map(lambda x:x+1, [1,2,3]))) 一.filter() --过滤.筛选 刚接触filter时 ,运行总是出现<filter object at 0x000001B68F052828> 得不到想要的数据,后来发现是因为filter的结果是一个数组, 需要 list 帮助,后来将print(f) 改为 pri

python之lambda,filter,map,reduce函数

g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>>3 当然,你也可以这样使用: lambda x:x+1(1) >>>2 可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: def g(x): return x+1 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. Python中,

[py][lc]python高阶函数(匿名/map/reduce/sorted)

匿名函数 f = lambda x: x * x f(2) # x =2 #4 - 传入列表 f = lambda x: x[2] print(f([1, 2, 3])) # x = [1,2,3] map使用 传入函数体 def f(x): return x*x r = map(f, [1, 2, 3, 4]) #函数作用在可迭代对象的每一项 #[1, 4, 9, 16] - 另一个例子 list(map([1, 2, 3, 4, 5, 6, 7, 8, 9], lambda x: x * x

Python 函数 filter() map() reduce()

1.filter(bool_func,seq) filter()是'筛选函数',也接收一个函数和一个序列,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素 例子: def fr(x): return x%2==1 print 'filter1:',filter(fr,range(1,51))#筛选出100以内的所有奇数 print 'filter2:',filter(fr,[1,2,3,4]) 输出: filter1: [1, 3

Python内置函数filter, map, reduce

filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当于过滤器. filter函数的定义: filter(function or None, sequence) -> list, tuple, or string function是一个谓词函数,接受一个参数,返回布尔值True或False. filter函数会对序列参数sequence中的每个元素调用

python之函数filter、reduce

---恢复内容开始--- 一.filter函数 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,对序列中每个元素进行for循环,然后将每个元素传递给第一个位置的函数,然后返回 True 或 False,最后将返回 True 的元素放到新列表中 1.使用for循环将前面包含sb的文本过滤出来, moive_people = ['sb_alex','sb_wupeiqi','yuanhao','sb_lihai

python关于list的三个内置函数filter(), map(), reduce()

''' Python --version :Python 2.7.11 Quote : https://docs.python.org/2/tutorial/datastructures.html#more-on-lists Add by camel97 2017-04 ''' 1.filter() #filter(function, sequence) returns a sequence consisting of those items from the sequence for whic

python内置函数filter(),map(),reduce()笔记

'''python reduce()函数:reduce()函数会对参数序列中元素进行积累. 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 function(有两个参数)先对集合中的第 1.2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果. 语法:ruduce()reduce(function,iterable,initializer)参数:function-函数,有两个参数iterable--可迭代对象init

Python 函数式编程 filter(),map() , reduce()......

1.filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型).如果该 序列 (sequence)是一个 string(字符串)或者 tuple (元组),返回值必定是同一类型,否则,它总是 list.例如,以下程序可以计算部分素数: >>> def f(x): return x % 2 != 0 and x % 3 != 0 ... &g