一、 关于数学运算
(一) abs() 计算绝对值
参数必须是数值类型,且每次计算一个。参数是str类时报错。需要对list每一个元素求abs,可使用遍历或者map()。
因为字典是不可遍历的,所以也无法使用map(),只能按需逐个求解。
# abs()求绝对值,参数需要是数值类型,且每次只能计算一个 # int a = 1 b = -1 print('abs({}) = {}'.format(a,abs(a))) #abs(1) = 1 print('abs({}) = {}'.format(b,abs(b))) #abs(-1) = 1 # 布尔值 c = True print('abs({}) = {}'.format(c,abs(c))) # abs(True) = 1 c = False print('abs({}) = {}'.format(c,abs(c))) # abs(False) = 0 # # abs()函数参数不能是str类型 # c = 'erf' # print('abs({}) = {}'.format(c,abs(c))) # # TypeError: bad operand type for abs(): 'str' # 对于列表统一求绝对值,需要遍历或者map() d = [12,-34,5,6,-3,9.3,-3.3] # map() abs_d = map(abs,d) print(abs_d) #<map object at 0x00000000005BA128> print(list(abs_d)) #[12, 34, 5, 6, 3, 9.3, 3.3] # 遍历 abs_d =[] for i in d: abs_d.append(abs(i)) print(abs_d) #[12, 34, 5, 6, 3, 9.3, 3.3]
(二) max()与 min() 求最大最小值
li = [1,3,5.4,3,-3,-9.4] print(max(li),min(li)) # 5.4 -9.4 # 各比较数值直接做参数 print(max(3,2,5)) # 5
(三) sum() 求和
注意,sum()函数的参数应该是一个list。
# print(sum(6,5)) # 报错 print(sum([6,5])) # 11
(四) divmod() 除法
注意:此函数使用时,第一个参数数被除数,第二个参数是除数,结果是一个元组,元组第一个元素是商,第二个元素是余数。除数为0时,报错。在分页时常用此函数。
print(divmod(5,3)) # (1, 2) print(divmod(5.5,3)) # (1.0, 2.5) # print(divmod(5,0)) # 报错
(五) pow() 求幂
两个参数时,求幂:pow(x,y) = x**y
三个参数时,求幂后取余:pow(x,y,z) = pow(x,y)%z = x**y%z
# pow(x,y) = x**y print(pow(2,3)) # 8 print(pow(2,-3)) # 0.125 print(pow(2,3.5)) # 11.313708498984761 print(pow(2,-3.5)) # 0.08838834764831845 # pow(x,y,z) = pow(x,y)%z = x**y%z # 三个参数时,表示求幂后取余数,三个参数需要全部是int print(pow(2,3,3)) # 2
注意:三个参数时,需要全部为int。
(六) round() 四舍五入
参数可以是数值,也可以是数值表达式。
print(round(3.14)) # 3 print(round(3.54)) # 4 print(round(4-3*2+4%3)) # -1
(七) complex() 虚数运算
可直接进行两个虚数的运算,也可以生成一个新虚数。complex(a,b)= a+bj
# complex(a,b)= a+bj comdata = complex(3,2) print(comdata,type(comdata)) # (3+2j) <class 'complex'> comdata = complex(3.5,2.5) print(comdata) # (3.5+2.5j) #只有一个参数,默认虚部为0 comdata = complex(3) print(comdata) # (3+0j) # comdata = complex('a') # print(comdata,type(comdata)) # 报错 # 计算 # complex(a,b)=a+bj comdata = complex(1+2j,3) print(comdata) #(1+5j) comdata = complex(1+2j,3+6j) print(comdata) #(-5+5j) # 参数可以是一个数字字符,其他str报错 comdata = complex('1') print(comdata,type(comdata)) #(1+0j) <class 'complex'>
二、 过滤:对可迭代对象中的每一个元素,应用指定函数。
常与lambda()、三元运算同时使用。
(一) map() 返回一个新的map对象,记录每一个元素应用指定函数后的结果。
map_myList = map(lambda x:x+5,myList) print(map_myList) # <map object at 0x000000000103A358> print(list(map_myList)) # [6, 8.4, 9, 3] x = [1,2,3,4] y = [4,3,2,1] ret = map(lambda x,y:x+y,x,y) print(list(ret)) # [5, 5, 5, 5]
(二) filter() 返回一个新的filter对象,记录应用指定函数后值为True的所有元素。
# 与lambda()同时使用 a = [12, 34, 5, 6, 3, 9.3, 3.3] ret = filter(lambda x:x>4,a) print(ret,type(ret)) # <filter object at 0x0000000000B3A358> <class 'filter'> print(list(ret)) # [12, 34, 5, 6, 9.3] # 去掉假值 a = ['', 0, [], 6, (), 3, 3.3] ret = filter(None,a) print(ret) # <filter object at 0x000000000103ADD8> print(list(ret)) # [6, 3, 3.3]
a = [1,2,3,4] ret = map(lambda x:True if x<3 else None,a) print(list(ret)) # [True, True, None, None] a = [1,2,3,4] ret = filter(lambda x:True if x<3 else None,a) print(list(ret)) # [1, 2]
三、 判断真假:[]、{}、()、0为假,其余为真。
(一) all() 判断迭代对象中元素是否全部为真
参数需要是迭代对象,对象内没有元素,返回True;对象内有元素,且元素全部为真时,返回True。
# 空元素为假,空格为真 myList = ['3',3,'er',' '] print(all(myList)) # True myList = ['3',3,'er',''] print(all(myList)) # False # 0为假 myList = ['3',0,'er',' '] print(all(myList)) # False # 空对象为真 myList = () print(all(myList)) # True myList = '' print(all(myList)) # True
(二) any() 判断迭代对象中元素是否有真
参数需要是迭代对象,对象内没有元素,返回False;对象内有元素,且有元素不为假时,返回True。
# 有元素为真,返回True myList = ['3',3,'er',' '] print(any(myList)) # True myList = ['3',3,'er',''] print(any(myList)) # True # 没有元素为真,返回False myList = [0,'',[]] print(any(myList)) # False # 空对象为假,返回False myList = () print(any(myList)) # False myList = '' print(any(myList)) # False
(三) bool() 将一个对象转换成布尔值。
空对象返回False,对象内含有真元素时返回True。
bool() a = [] print(bool(a)) # False a = ['',2] print(bool(a)) # True print(bool()) # False
四、 将任意对象转化为字符串
(一) repr() 将任意对象转化为python解释器可读的字符串
实际上,repr()与__repr__()对应。运行repr()时,相当于到对象类中寻找__repr__方法,并获取返回值(一个可以表示对象的可打印字符串)。
ASCII()与repr函数类似,当对象元素具有ascii码值时,返回值同repr(),否则就会输出\u、\U、\x等字符表示。
# ascii s = 'hello' print(repr(s)) # 'hello' print(ascii(s)) # 'hello' s = '你好' print(repr(s)) # '你好' print(ascii(s)) # '\u4f60\u597d'
(二) str() 将任意对象转化为人可读的字符串
a = 'hi,world!' print(repr(a),type(repr(a))) # 'hi,world!' <class 'str'> print(str(a),type(str(a))) # hi,world! <class 'str'> # 将任意值转成字符串 a = 3+2 print(repr(a),type(repr(a))) # 5 <class 'str'> print(str(a),type(str(a))) # 5 <class 'str'> a = 1.0/7.0 print(repr(a),type(repr(a))) # 0.14285714285714285 <class 'str'> print(str(a),type(str(a))) # 0.14285714285714285 <class 'str'> # 将列表等对象转换成字符串 a = [12, 34, 5, 6, 3, 9.3, 3.3] print(repr(a),type(repr(a))) # [12, 34, 5, 6, 3, 9.3, 3.3] <class 'str'> print(str(a),type(str(a))) # [12, 34, 5, 6, 3, 9.3, 3.3] <class 'str'> a = {'k1':'k1','k2':2} print(repr(a),type(repr(a))) # {'k1': 'k1', 'k2': 2} <class 'str'> print(str(a),type(str(a))) # {'k1': 'k1', 'k2': 2} <class 'str'>
对象应用repr()转化成字符串后,可以用eval()还原。
a = {'k1':1,'k2':2}
print(a,type(a)) # {'k1': 1, 'k2': 2} <class 'dict'>
b = repr(a) # 将字典转换成字符串
print(b,type(b)) # {'k1': 1, 'k2': 2} <class 'str'>
c = eval(b) # 将字符串还原回字典
print(c,type(c)) # {'k1': 1, 'k2': 2} <class 'dict'>
五、关于进制转换
(一) bin() 将整数转化成二进制字符串
a = 3435 bin_a = bin(a) # 取二进制字符串 print(bin_a,type(bin_a)) # 0b110101101011 <class 'str'> c = eval(bin_a) print(c,type(c)) # 3435 <class 'int'>
(二) oct() 将整数转换成八进制字符串
hex() 将整数转换成十六进制字符串
a = 3434 print(a,type(a)) # 3434 <class 'int'> oct_a = oct(a) print(oct_a,type(oct_a)) # 0o6552 <class 'str'> print(eval(oct_a)) # 3434 hex_a = hex(a) print(hex_a,type(hex_a)) # 0xd6a <class 'str'> print(eval(hex_a)) # 3434
注意:只能转化整数,float类型做参数时会报错。数值字符串可以用eval()还原为int。
六、 enumerate() 将一个可迭代对象转换成一个索引序列
通过enumerate得到的索引序列,可以同时使用索引和值,常用在for循环中,可以指定索引开始值。
a = ['name','age','sex','num'] # 得到一个索引序列,默认序号从0开始 ret = enumerate(a) print(ret,type(ret)) # <enumerate object at 0x0000000001022048> <class 'enumerate'> # 应用在for循环中,打印 for index,item in ret: print(index,':',item) # 得到一个索引序列,序号从1开始 ret = enumerate(a,1) for index,item in ret: print(index,':',item)
浙公网安备 33010602011771号