Python基础学习之常见的内建函数整理
前言 Python针对众多的类型,提供了众多的内建函数来处理,这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作,下面话不多说了,来一看看详细的介绍吧。 map() map()函数接受两个参数,一个是函数,一个是可迭代对象(Iterable),map将传入的函数依次作用到可迭代对象的每一个元素,并把结果作为迭代器(Iterator)返回。 举例说明,有一个函数 运用简单的循环可以实现: >>> def f(x): ... return x * x ... L = [] for n in [1,9]: L.append(f(n)) print(L) 运用高阶函数 >>> r = map(f,[1,9]) >>> list(r) [1,9,16,25,36,49,64,81] 结果r是一个迭代器,迭代器是惰性序列,通过 如果要把这个list所有数字转为字符串利用 >>> list(map(str,9])) ['1','2','3','4','5','6','7','8','9'] 小练习:利用 def normalize(name): return name.capitalize() l1=["adam","LISA","barT"] l2=list(map(normalize,l1)) print(l2) reduce()
效果就是: 举例说明,将序列 >>> from functools import reduce >>> def fn(x,y): ... return x * 10 + y ... >>> reduce(fn,5]) 12345 小练习:编写一个 from functools import reduce def pro (x,y): return x * y def prod(L): return reduce(pro,L) print(prod([1,7]))
CHAR_TO_FLOAT = { '0': 0,'1': 1,'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8,'9': 9,'.': -1 } def str2float(s): nums = map(lambda ch:CHAR_TO_FLOAT[ch],s) point = 0 def to_float(f,n): nonlocal point if n==-1: point =1 return f if point ==0: return f*10+n else: point =point *10 return f + n/point return reduce(to_float,nums,0)#第三个参数0是初始值,对应to_float中f filter()
举例说明,删除list中的偶数: def is_odd(n): return n % 2 == 1 list(filter(is_odd,10,15])) # 结果: [1,15] 小练习:用filter()求素数 计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单: 首先,列出从2开始的所有自然数,构造一个序列: 2,11,12,13,14,15,17,18,19,20,... 取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉: 3,... 取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉: 5,... 取新序列的第一个数5,然后用5把序列的5的倍数筛掉: 7,... 不断筛下去,就可以得到所有的素数。 用Python实现这个算法,先构造一个从3开始的期数数列: def _odd_iter(): n = 1 while True: n = n + 2 yield n #这是一个生成器,并且是一个无线序列 定义一个筛选函数: def _not_divisible(n): return lambda x: x % n > 0 定义一个生成器不断返回下一个素数: def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n),it) # 构造新序列 打印100以内素数: for n in primes(): if n < 100: print(n) else: break sorted() python内置的 >>> sorted([36,-12,-21]) [-21,36]
>>> sorted([36,-21],key=abs) [5,-21,36] key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序. 默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。如果想忽略大小写可都转换成小写来比较: >>> sorted(['bob','about','Zoo','Credit'],key=str.lower) ['about','bob','Credit','Zoo'] 要进行反向排序,不必改动key函数,可以传入第三个参数 >>> sorted(['bob',key=str.lower,reverse=True) ['Zoo','about'] 小练习:假设我们用一组tuple表示学生名字和成绩: L = [('Bob',88)] def by_score(t): for i in t: return t[1] L2=sorted(L,key= by_score) print(L2) 运用匿名函数更简洁: L2=sorted(L,key=lambda t:t[1]) print(L2) 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |