一、内置函数
前面我们已经学过了内置函数(python自带的):
int()、str()、list()、set()、dict()、tuple()、bool()、type()、len()、input()、print()
今儿个学习一些新滴,先来一些不常用的,简单记一下:
print(all([1, 2, 3, 4])) # 判断可迭代的对象里面的值是否都为真 print(all(['1', '2', '3', 0])) # 有一个为假,即为False print(any([0, '', False])) # 判断可迭代的对象里面的值是否有一个为真,则为真 print(bin(10)) # 十进制转二进制 print(chr(33)) # 打印数字对应的ascii print(ord('b')) # 打印字符串对应的ascii码 print(hex(111)) # 数字转成16进制 print(oct(111)) # 把数字转换成8进制 print(max([1, 5, 9, 111, 324])) # 取最大值 print(sum([1, 5, 9, 111, 324])) # 求和 print(divmod(10, 3)) # 取余 print(round(11.11111, 2)) # 取几位小数
再来一些比较常用的
#dir讲解 f = open('a.txt', 'w') print(dir(f)) # dir打印传入对象的可调用方法 s = '' print(dir(s)) # 局部变量 locals def func(): name = 'abc' age = 18 # {'name':'abc','age':18} print(locals()) # 返回函数里面的局部变量 func() #全局变量 globals name = '123' print(globals()) # 返回程序内所有的变量,返回的是一个字典 #zip()讲解 把两个list和成一个二维数组 l = ['u1', 'u2', 'u3', 'u4'] # 多写元素也没问题 l2 = ['p1', 'p2', 'p3'] print(list(zip(l, l2))) # 得转成list,两个list合成一个二维数组 print(dict(zip(l, l2))) # 字典
下面我们康康比较重要的:
1、sorted()讲解
注:sorted字符串、元组、集合、字典都可以排序
(1)list排序
# sorted()讲解 print(sorted([2, 31, 34, 6, 1, 23, 4])) # 可这样排序 # 也可这样 l = [1, 2, 635, 63, 62, 325, 2352, 6, 2632] l.sort() #list里面得方法,对原来得l进行排序,改变了位置而已 print(l) print(sorted(l, reverse=True)) # reverse=True按降序排,sorted用来排序,返回一个新的list,l不会变
运行结果:
[1, 2, 4, 6, 23, 31, 34] [1, 2, 6, 62, 63, 325, 635, 2352, 2632] [2632, 2352, 635, 325, 63, 62, 6, 2, 1]
(2)二维数组排序
# 二维数组进行排序 l = [ ['小名', 5], ['xiaohei', 19], ['xiaobai', 20], ['xiaolan', 10] ] l1 = sorted(l, reverse=True, key=lambda x: x[-1]) # key的作用是传一个函数名 print(l1) # 也可定义一个函数,让sorted来调用 def use_key(x): return x[1] l2 = sorted(l, reverse=True, key=use_key) # 让sorted来调用use_key print(l2)
运行结果:
[['xiaobai', 20], ['xiaohei', 19], ['xiaolan', 10], ['小名', 5]] [['xiaobai', 20], ['xiaohei', 19], ['xiaolan', 10], ['小名', 5]]
(3)字典排序
# 字典排序 d = {'a': 1, 'b': 2} print(d) l1 = sorted({'a': 1, 'b': 2}, reverse=True) # 直接传一字典,是对字典得key进行排序 print(l1) l2 = sorted(d.items(), reverse=True, key=lambda x: x[0]) # 通过key来排序 print(l2) l3 = sorted(d.items(), reverse=True, key=lambda x: x[1]) # 通过value来排序 print(l3)
运行结果:
{'a': 1, 'b': 2} ['b', 'a'] [('b', 2), ('a', 1)] [('b', 2), ('a', 1)]
(4)三维数组排序
# 三维数组进行排序 l = [ ('小名', 5, ['xx', 11]), ['xiaohei', 19, ['xx', 13]], ['xiaobai', 20, ['xx', 18]], ['xiaolan', 10, ['xx', 20]] ] l4 = sorted(l, reverse=True, key=lambda x: x[-1][-1]) print(l4)
运行结果:
[['xiaolan', 10, ['xx', 20]], ['xiaobai', 20, ['xx', 18]], ['xiaohei', 19, ['xx', 13]], ('小名', 5, ['xx', 11])]
2、filter()讲解
# filter()讲解 def filter_test(x): return x > 5 result = filter(filter_test, [12, 3, 12, 2, 1, 2, 35]) print(list(result)) # 这俩等同 result = filter(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35]) # 把后面的迭代对象根据前面的方法筛选 print(list(result))
运行结果:
[12, 12, 35]
[12, 12, 35]
3、map()讲解
# map()讲解 result = map(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35]) print(list(result)) l = [12, 3, 12, 2, 1, 2, 35] # map方式实现 result = map(lambda x: str(x).strip().zfill(3), l) print(list(result)) # 最传统的方式 l2 = [] for i in l: new_i = str(i).strip().zfill(3) l2.append(new_i) print(l2) #列表生成式方式 l3 = [str(i).strip().zfill(3) for i in l] print(l3)
运行结果:
[True, False, True, False, False, False, True] ['012', '003', '012', '002', '001', '002', '035'] ['012', '003', '012', '002', '001', '002', '035'] ['012', '003', '012', '002', '001', '002', '035']
4、enumerate()讲解
# enumerate()讲解 l = [12, 3, 12, 2, 1, 35] index = 0 for i in l: print('%s -> %s' % (index, i)) index += 1 # 俩等同 print('--------') for index, i in enumerate(l): # 生成一个二位数组 print('%s -> %s' % (index, i))
运行结果:
0 -> 12
1 -> 3
2 -> 12
3 -> 2
4 -> 1
5 -> 35
--------
0 -> 12
1 -> 3
2 -> 12
3 -> 2
4 -> 1
5 -> 35
举个小例子:
l = ['购物', '注册', '充值', '积分查询'] for index, i in enumerate(l, 1): # 指定从1开始 print('%s -> %s' % (index, i)) print('请输入你的选择:')
运行结果:
1 -> 购物 2 -> 注册 3 -> 充值 4 -> 积分查询 请输入你的选择:
5、exec讲解(百度搜--网络在线编程python)
# exec 讲解 print(exec('def a():pass')) # 执行python代码 str_code = ''' # import os l = [12, 3, 12, 2, 1, 2, 35] print([str(i).strip().zfill(3) for i in l]) ''' exec(str_code) # if 'import os' in str_code: # print('os模块不能用')
运行结果:
None ['012', '003', '012', '002', '001', '002', '035']
6、eval讲解
# eval 讲解 print(eval('[]')) # 执行python代码,只能执行简单的,定义数据类型和运算 result = eval('{"code":1,"name":"xiaohei"}') # 执行python代码,只能执行简单的,定义数据类型和运算 print(result)
运行结果:
[] {'code': 1, 'name': 'xiaohei'}
二、匿名函数
- 如果这个函数只执行一次的话,那就可以定义一个匿名函数。
- 匿名函数只能处理比较简单的处理逻辑,只能写简单的表达式,不能写循环判断,比如三元运算符。
- 匿名函数定义使用lambda关键字,比如说要定义一个函数,它的功能是返回两个数相加和,就可以使用lambda。
代码如下:
1
2
|
s = lambda x,y:x+y#冒号号前面的x,y是入参,冒号后面的是返回值
print(s(1,9))#因为函数即变量,如果没有定一个变量把lambda存起来的话,它就不在内存里,没法执行,所有把它放到s这个变量里面
|
# 匿名函数也是一个函数,是一个简单的函数,没有名字,只能实现一些简单的功能 f1 = lambda x, y: x + y print(f1(1, 2)) # 俩函数等同 def f2(x): return x + 1 print(f2(1))
运行结果:
3 2