内置函数
day25
# abs 求绝对值 print(abs(-5)) # 结果为5 print(abs(3)) # 结果为3 # all 判断真假,传入可迭代对象,判断每个元素,如果全部元素都为True就返回True,否则返回False # 如果可迭代对象为空也返回True,为空不代表可以不传 # print(all()) # 会报错,不可不传入值 print(all("")) # 返回True,传入了空字符串,可迭代对象为空 print(all((1, "", 2, None))) # 返回False,因为"" 这个空字符串是传入迭代器的一个元素,会返回False. 空字符串,0,None都会返回False print(all(i for i in range(10))) # 返回False,因为元素有0 print(all(i for i in range(1, 10))) # 返回True # any 判断真假,传入可迭代对象,判断每个元素,如果任何一个元素为True就返回True,否则返回False # 如果可迭代对象为空返回False,为空不代表可以不传 # print(any()) # 会报错,不可不传入值 print(any([])) # 返回False,可迭代对象为空 print(any([None, 0, "", {}, 1])) # 返回True,因为元素 1 为True # sum 求和 print(sum((i for i in range(10)))) # bin 转为二进制 print(bin(10)) # 结果为 0b1010 # bool 判断真假,空字符串,0,None都会返回False print(bool(0)) # 返回False print(bool(None)) # 返回False print(bool("")) # 返回False print(bool(1)) # 返回True # bytes 把字符串转为字节 print(bytes("hello", encoding="utf-8")) # 结果为 b'hello' # callable 判断是否可调用 x = 2 print(callable(x)) # 返回False,不可调用 def test(): pass print(callable(test)) # 返回True,可被调用 print(callable(sum)) # 返回True,可被调用 # chr 根据传入的数字返回对应的ASCII编码表的值 print(chr(171)) # 返回« # ord 根据传入的字符返回对应ASCII编码表的数字序号 print(ord("«")) # 返回171 # dir 显示可以调用的方法 print(dir(sum)) mylist = [] print(dir(mylist)) # help 查看帮助文档 print(help(sum)) print(help(mylist)) # divmod 传入两个数字,返回一个元组,分别是两个数整除的结果和取余的结果,可用在分页 print(divmod(10, 3)) # 结果为 (3, 1) # enumerate 返回的是一个迭代器,包含传入元素的索引以及值 for i in enumerate(["a", "b", "c", "d"]): print(i) # 结果为 (0, 'a') (1, 'b') (2, 'c') (3, 'd') for i in enumerate({"x": 1, "y": 2}): print(i) # (0, 'x') (1, 'y') 也有可能是 (0, 'y') (1, 'x') 因为字典是无序的 # hash算法,返回hash值,hash值不能逆推 print(hash("asfadfs")) # 返回hash值为 7300869675203703379 # hex 十六进制转十进制 print(hex(10)) # 返回结果为0xa # id 查看唯一标识身份 print(id("abcde")) # 返回结果 3027805306080 a = 1 b = 2 print(id(a)) # id为1865244896 print(id(b)) # id为1865244928 print(a is b) # 返回False,不一致 x = "a" y = "a" print(id(x)) # id为2108572640512 print(id(y)) # id为2108572640512 print(x is y) # 返回True,一致 # max print(max(1, 2, 3, 4, 5, 3, 2, 4, 34, 2, 1, 5)) # 返回最大值为34 print(min(1, 2, 3, 4, 5, 3, 2, 4, 34, 2, 1, 5)) # 返回最小值为1 # max,min应用:求下面字典中工资最高的人 salarries = { "alex": 230, "egon": 1000, "wanbadan": 300, "laowang": 400 } print(max(salarries)) # 结果为 wanbadan 工资最高,不正确,是按照key来进行比较了,所以得到wangbadan print(max(salarries.values())) # 得到结果为 1000 ,但要求是要工资最高的人名,也不对,是按照value来比较了,但没有返回人名 # 实现方式1: def get_value(k): return salarries[k] print(max(salarries, key=get_value)) # 得到结果为egon,正确 # 上述说明:由于max传入salarries或salarries.values()都只能返回各自的比较值,所以同时传入两个值给max, # 第一个值传入salarries用于获得人名, # 第二个值key=get_value的作用是,由于salarries是可迭代对象,所以是可以next的,max内部将salarries的值一个个next出来得到了key,也就是得到了人名, # 再将这个人名传给get_value函数返回得到这个人的工资,赋值给key作为比较值,salarries的值next完后就得到了所有人的工资,比较得到1000最大,同时也得到了对应的人名为egon # 实现方式2: print(max(salarries, key=lambda k: salarries[k])) # 得到结果为egon,正确 # 上述说明:lambda用于定义匿名函数,也就是函数没有函数名。 # lambda k: salarries[k] 表示定义了一个匿名函数,需传入参数为k,返回值为salarries[k] ,和之前上面定义的get_value函数功能一致,但是更精简。 # 同样方式取到工资最少的人 print(min(salarries, key=lambda k: salarries[k])) # 得到结果为 alex,正确 # zip 拉链 l1 = [1,4,3] s = "hel" for i in zip(l1,s): print(i) # 输出结果为 (1, 'h') (4, 'e') (3, 'l') # 上述说明:zip会将l1和s这两个迭代对象一一对应输出元组,无论哪个可迭代对象的元素多,结果中元组的数量都只会按照元素最少的那个对象来对应 print(salarries.keys(),salarries.values()) z = zip(salarries.keys(),salarries.values()) # for i in z: # print(i) # 输出结果为:('alex', 230) ('egon', 1000) ('wanbadan', 300) ('laowang', 400) print(max(z)) # 输出结果为:('wanbadan', 300) ,比较最大值却得到wanbadan,因为比较的是key z = zip(salarries.values(),salarries.keys()) print(max(z)) # 输出结果为:(1000, 'egon') ,这里比较的是value,得到正确的工资最高的egon print(max((2,"b"),(1,"a"),(3,"a"))) # 结果得到(3, 'a') 大,因为首先比的是第一位,如果一致再进行第二位的比较 # sorted 排序 l=[3,5,2,5,2,1,7,7,4,2,56,2] print(sorted(l)) # 结果:[1, 2, 2, 2, 2, 3, 4, 5, 5, 7, 7, 56] ,返回值是列表,默认是升序 print(sorted(l,reverse=True)) # 结果:[56, 7, 7, 5, 5, 4, 3, 2, 2, 2, 2, 1] ,返回值是列表,reverse=True 表示按降序排列 s="hello abc" print(sorted(s)) # 结果:[' ', 'a', 'b', 'c', 'e', 'h', 'l', 'l', 'o'] salarries = { "alex": 230, "egon": 1000, "wanbadan": 300, "laowang": 400 } print(sorted(salarries)) # 结果:['alex', 'egon', 'laowang', 'wanbadan'] 默认是按照字典的key去排序 print(sorted(salarries,key=lambda k:salarries[k])) # 结果:['alex', 'wanbadan', 'laowang', 'egon'] ,按照工资排升序 print(sorted(salarries,key=lambda k:salarries[k],reverse=True)) # 结果:['egon', 'laowang', 'wanbadan', 'alex'] ,按照工资排降序 # 重要 # map,映射 # 例子1:给列表里每个值进行平方 nums = [1, 2, 3, 5, 4] # 传统: newlist = [] for i in nums: res = i ** 2 newlist.append(res) print(newlist) # 结果为 [1, 4, 9, 25, 16] # map方式 m = map(lambda item: item ** 2, nums) print(m) # 结果为 <map object at 0x000002753BB432B0> print(list(m)) # 结果为 [1, 4, 9, 25, 16] # 例子2:给列表里每个值后面都加上“SB” name = ["aaa", "bbb", "ccc", "ddd"] m = map(lambda item: item + "SB", name) print(list(m)) # 结果为 ['aaaSB', 'bbbSB', 'cccSB', 'dddSB'] # reduce,合并 from functools import reduce nums = list(range(100)) print(reduce(lambda x, y: x + y, nums)) # 结果为 4950 # 上述说明:reduce每次会将nums next两次传给x和y,x+y之后会放到那里,然后再next和之前的结果相加,直到完成,结果为4950 print(reduce(lambda x, y: x + y, nums, 100)) # 结果为 5050 # 上述说明:100叫做初始值,reduce next两次后与100相加,得到101,然后再next和之前的101相加,直到完成,结果为5050 # filter,过滤 # 例子:过滤出age大于100的 name_l = [ {"name": "alex", "age": 20}, {"name": "alex22", "age": 340}, {"name": "alex33", "age": 1000}, {"name": "alex44", "age": 9000}, ] f = filter(lambda d: d["age"] > 100, name_l) for i in f: print(i) print("__________________") # 很重要,在面向对象里讲 # classmethod # staticmethod # property # delattr # hasattr # getattr # setattr # issubclass # super # 先不管,很少用 # compile # complex # eval # exec # 数据类型 # 与数字相关的数据类型:int, float, bool, complex num = 1 # 相当于 num = int(1) print(type(num)) # 查看num的类型 print(isinstance(num, int)) # 判断num是否为int类型,返回True print(num is 1) # is 是身份运算,根据id去判断身份,返回True # str 字符串 x = "hello" # 相当于 x = str("hello") print(str(1)) print(str({"a": 1})) # list 列表 x = [] x = list([i for i in range(10)]) print(x) # tuple 元组 # dict 字典 d = {"a": 1} d = dict(x=1, y=2, z=3) # 相当于 d = {'x': 1, 'y': 2, 'z': 3} print(d) # 结果为 {'x': 1, 'y': 2, 'z': 3} # set 集合,无序,去重,关系运算 s = {1, 2, 3, 4, 4, 4} print(s) # 结果为 {1, 2, 3, 4} ,去掉了重复的4 s.add(5) # 添加5到集合中 print(s) # 结果为 {1, 2, 3, 4, 5} # frozenset 不可变集合,没有像集合add,remove这类的方法 f = {1, 2, 3, 4} print(type(f)) # 结果为 <class 'set'> 类型 f2 = frozenset({1, 2, 3, 4}) print(type(f2)) # 结果为 <class 'frozenset'> 类型 # 其他: # oct, 十进制转八进制 print(oct(10)) # 结果为0o12 # pow, print(pow(3, 2)) # 3的2次方,结果为9 print(pow(3, 2, 2)) # 3的2次方,再取余,结果为1 # reversed # 反转 print(list(reversed([1, 3, 5, 7]))) # 结果为:[7, 5, 3, 1] # round,四舍六入五留双 print(round(3.4)) # 结果为:3 print(round(11.3)) # 结果为:11 print(round(11.5)) # 结果为:12 print(round(12.5)) # 结果为:12 print(round(12.6)) # 结果为:13 # slice,切片 l = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(l[2:4]) # 结果为 [3, 4] print(l[1:7:2]) # 步长为2,结果为 [2, 4, 6] s = slice(2, 4) print(l[s]) # 结果为 [3, 4] s2 = slice(1, 7, 2) print(l[s2]) # 步长为2,结果为 [2, 4, 6] # vars vars() # 不加参数和locals()一样 # __import__() , 导入字符串模块 # 常规: import time time.sleep(3) print(time) # __import__ 方式 m = __import__("time") print(m) m.sleep(3)
共有 0 条评论