内置函数
什么是内置函数?内置就是Python给你提供的,拿来直接用的函数,比如print,input等等。
以下介绍几个重要的内置函数以及使用方法:
min,max函数
内置函数min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。
1 l1 = [(1,1000),(2,18),(3,500)] 2 def func(x): 3 return x[1] 4 print(min(l1, key=func)) # (2, 18)
从上面的例子可以看出:
1 min函数会将iterable里面的每个元素自动提取出来
2 min函数会将返回值作为比较大小的具体条件
3 min函数将遍历的元素返回回来
同理:内置函数max则是返回可迭代对象的最大值(可以加key,key为函数名,通过函数的规则,返回最大值)
与数据结构相关的内置函数
列表与元组
list: 将一个可迭代对象转化为列表(如果是字典,默认将key作为列表的元素)
tuple: 将一个可迭代对象转化为元组(如果是字典,默认将key作为元组的元素)
reversed()
reversed:将一个序列翻转,并返回次翻转序列的迭代器。
1 # 列表 2 l1 = [1,3,4,2,6] 3 for i in reversed(l1): 4 print(i) 5 # 字符串 6 s1 = 'assdfdgf' 7 for i in reversed(s1): 8 print(i) 9 # 字典 10 dic = {'name':'colin','age':27,'hobby':'meimei'} 11 for i in reversed(dic): 12 print(i) # TypeError: 'dict' object is not reversible
slice: 构造一个切片对象,用于列表的切片。
1 # 切片取值 2 l1 = [i for i in range(10)] 3 l2 = l1[:5:2] 4 # slice取值 5 l3 = [i for i in range(10,20)] 6 sli_obj = slice(0,5,2) 7 print(l3[sli_obj]) # [10, 12, 14] 8 # slice取值 9 l4 = ['a','b','c','d','e','f','g'] 10 sli_obj = slice(0,5,2) 11 print(l4[sli_obj]) # ['a', 'c', 'e']
format: 与具体数据有关,用于计算各种小数,精算等.
1 print(format('test','<20')) # test # 总共20个字符长度,test左对齐 2 print(format('test','>20')) # test # 总共20个字符长度,test右对齐 3 print(format('test','^20')) # test # 总共20个字符长度,test居中
bytes: 主要是将unicode类型转化为bytes类型。
1 a1 = '太白' 2 b1 = bytes(a1,encoding='utf-8') 3 print(b1) # b'\xe5\xa4\xaa\xe7\x99\xbd' 4 5 a1 = '太白' 6 print(a1.encode('utf-8')) # b'\xe5\xa4\xaa\xe7\x99\xbd' 7 print(a1.encode('utf-8').decode()) # 太白
repr: 返回一个对象的string形式(原形毕露)。
1 print('colin') # colin 2 print(repr('colin')) # 'colin' 3 print(repr("colin")) # 'colin' 4 print(repr("{'colin':'haoren'}")) # "{'colin':'haoren'}"
sorted: 对所有可迭代的对象进行排序操作。
1 l1 = [2,3,4,5,8,1,3,4,7] 2 l1.sort() 3 print(l1) # [1, 2, 3, 3, 4, 4, 5, 7, 8] 4 print(sorted(l1)) # [1, 2, 3, 3, 4, 4, 5, 7, 8] 形成了一个新列表 5 print(l1) # [2, 3, 4, 5, 8, 1, 3, 4, 7] 原列表不变 6 7 l2 = [(1,1000),(2,18),(4,250),(3,500)] 8 print(sorted(l2)) # 默认按照第一个值排序 9 10 def func1(x): 11 return x[1] 12 print(sorted(l2,key=func1,reverse=True)) # 通过key 自定制函数选择第二个值
zip():拉链方法 将多个iter 纵向组成一个个元组。
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
1 l1 = [1,2,3,5,6,7] 2 tu1 = ('alex','太白', 'wusir', '女神') 3 dic = {'name': '日天', 'age':28, 'hobby': 'tea', 'weight':100} 4 print(zip(l1,tu1,dic)) 5 for i in zip(l1,tu1,dic): 6 print(i)
filter: 过滤,迭代器
1 l1 = [i for i in range(10)] 2 def func1(x): 3 return x % 2 == 0 4 print(list(filter(func1,l1)))
map:会根据提供的函数对指定序列做映射。 循环模式.
1 l1 = [1,2,3,4] 2 # print([i**2 for i in l1]) 3 def func(x): return x**2 4 print(list(map(func,l1)))
匿名函数 (lambda表达式)
func2 = lambda x: x*2 def func2(x): return x**2 func2 = lambda x : x**2 print(func2(6)) func2 = lambda x,y: x+y print(func2(1,2)) # 匿名函数 不单独使用,多与内置函数结合。 l2 = [(1,1000),(2,18),(4,250),(3,500)] print(sorted(l2,key=lambda x:x[1]))
例题:
dic={'k1':10,'k2':100,'k3':30} #1,利用内置函数匿名函数将dic按照值进行排序。 print(sorted(dic,key=lambda x:dic[x])) #2,利用内置函数匿名函数将dic按照键值对进行排序。 print(sorted(dic.items(),key=lambda x:x[1])) # 利用内置函数匿名函数 计算列表的每个数的2倍。 # [1,5,7,4,8] print(list(map(lambda x:x*2,[1,5,7,4,8]))) # 利用内置函数匿名函数,将值大于10的留下来。 # [5,8,11,9,15] print(list(filter(lambda x: x>10,[5,8,11,9,15])))