>>> import builtins
>>> dir(builtins)
[..., 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
abs 绝对值
数据类型转换
>>> int('123')
123
>>> float('3.14')
3.14
>>> str(12)
'12'
>>> bool(10)
True
>>> a="[{'k1':'v1'},{'k2':'v2'}]"
>>> eval(a)
[{'k1': 'v1'}, {'k2': 'v2'}]
>>> type(eval(a))
<class 'list'>
type() 获取数据类型
>>> type(111) # int类型 <class 'int'> >>> type(11.11) # float类型 <class 'float'> >>> type('hello') # str 类型 <class 'str'> >>> type(['a','b']) #list类型 <class 'list'> >>> type(('a','b','c')) #tuple类型 <class 'tuple'> >>> type({'k':1,'v':2}) #dict类型 <class 'dict'> >>> type(range(10)) #range类型 <class 'range'>
isinstance() 判断数据类型
第一个参数是待确定类型的数据, 第二个参数是指定一个数据类型, 若数据类型匹配, 返回 True, 否则返回False
>>> isinstance('111',int) False >>> isinstance([11,22],list) True >>> isinstance(range(5),range) True >>> isinstance('test',(int,str,list)) # 是元祖中的一个 返回true True
判断一个对象是否是可迭代对象
>>> from collections import Iterable
>>> isinstance('abc',Iterable) #字符串可以迭代
True
>>> isinstance(1234,Iterable) #整数不能迭代
False
input() 函数接受一个标准输入数据,返回为 string 类型
>>> input("please input a num: ") please input a num: 12 '12' >>> int(input("please input a num: ")) # 通过int把str转换成int please input a num: 12 12
enumerate 把一个list变成索引-元素对
>>> for i,value in enumerate(['a','b','c']): ... print(i,value) ... 0 a 1 b 2 c >>> for i,value in enumerate(('a','b','c'),1): #索引以1开始 ... print(i,value) ... 1 a 2 b 3 c
all(iterable) 所有元素为True时(或者iterable为空时)返回True,否则False
# all(iterable) 所有元素为True时(或者iterable为空时)返回True,否则False # iterable--元祖或列表 # interable 为False的情况包含有None,0,False,'' >>> all([1,2,3]) True >>> all(['',1,2,3]) False >>> all([None,1,2]) False >>> all([0,1,2]) False >>> all([]) True >>> all(()) True # 注意空列表 空元祖返回值为True
any() any(iterable) 只要有一个元素为True时,就返回True。否则False(iterable为空时也是)
# iterable--元祖或列表 >>> any([0,None,'',False]) False >>> any([0,None,'',False,1]) # 有一个为True 结果为True True >>> any([]) False >>> any(()) False # 空列表,空元祖返回False
ascii(object) 返回一个表示对象的字符串
>>> ascii('aaa') "'aaa'" >>> ascii('函数') "'\u51fd\u6570'"
bin(x) 返回整数的二进制表示
# x为int 或者long int >>> bin(10) '0b1010' >>> bin(2) '0b10'
callable() 检查一个对象是否可调用。注意:如果返回True,仍可能调用失败,但如果返回false,则一定不可调用
#检查一个对象是否可调用。注意:如果返回True,仍可能调用失败,但如果返回false,则一定不可调用 >>> def name(): ... print('hello') >>> callable(name) #函数返回True True # 类可被调用,如果类里含有__call__方法,则实例也可被调用.例如: >>> class Test: ... def met(self): ... return 123 >>> callable(Test) #类返回True True >>> t=Test() >>> callable(t) #Test类没有含__call__方法,实例t返回False False >>> class Test2: ... def __call__(self): ... return 123 >>> callable(Test2) #类返回True True >>> t2=Test2() >>> callable(t2) # Test2类有__call__方法,t2实例可以被调用 True
chr(i) i 参数表示一个0到1,114,111范围内的整数 返回相应字符
>>> chr(96) '`' >>> chr(257) 'ā' >>> chr(1114111) 'U0010ffff' chr(i)
compile(source, filename, mode[, flags[, dont_inherit]]) 将字符串编译为字节代码
>>> a=compile('print("hello")','','exec') >>> a <code object <module> at 0x7f165b517930, file "", line 1> >>> exec(a) hello
complex([real[,imag]]) 返回值为real + imag*1j 的复数
#返回值为real + imag*1j 的复数 #real 可以为数字和字符串。 为字符串时,被解释成一个复数,则不需要imag #imag为数字 >>> complex('1+j') #real为字符串时,不需要imag,+两边不能空格 (1+1j) >>> complex('2') (2+0j) >>> complex(2) (2+0j) >>> complex(2,1) (2+1j)
高阶函数: 把函数当做一个参数传入
map 根据提供的函数对指定序列作映射
map(function, iterable, ...) 一个函数,一个或多个可迭代对象。函数依次作用于Iterable序列的每一个元素,并把结果作为一个Iterator返回
>>> def func(x): ... return x**2 ... >>> r=map(func,[1,3,6,9]) #map(函数,可迭代对象) >>> isinstance(r,Iterator) #返回一个Iterator True >>> list(r) #Iterator是惰性序列,通过list()函数让它把整个序列都计算出来并返回一个list。 [1, 9, 36, 81] >>> list(map(lambda x,y:[x,y],[1,3,5,7,9],[2,4,6,8,10])) [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] >>> res = map(lambda x,y:x*y,[1,3,5],[2,4,6]) >>> for i in res: ... print(i) 2 12 30 >>> s=map(str,[1,2,3,4]) >>> list(s) ['1','2','3','4'] >>> def func(s): ... return s.title() ... >>> list(map(func,['adam', 'LISA', 'barT'])) ['Adam', 'Lisa', 'Bart'] >>> def func(x): ... d={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} ... return d[x] ... >>> list(map(func,['1','2','3','4'])) [1, 2, 3, 4]
filter 用于过滤序列。
filter(function, iterable) 和map不同的是,filter会把传入的函数依次作用于每个元素。根据返回值是True或False选择保留或丢弃该元素。filter返回的是iterator类型。
>>> list(filter(lambda x:x%2>0,range(1,10))) [1, 3, 5, 7, 9] #Iterator是一个惰性序列,要用list()函数获得所有结果并返回list >>> def is_not_empty(s): ... return s and len(s.strip()) > 0 ... >>> f = filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']) >>> f <filter object at 0x7f7fb412a9e8> >>> list(f) ['test', 'str', 'END']
reduce 函数会对参数序列中元素进行累积。
reduce(function, iterable[, initializer]) 第一个是函数(必须有两个参数),第二个是可迭代对象。reduce把结果继续和 iterable序列的下一个元素做累积计算
>>> from functools import reduce >>> reduce(lambda x,y:x*y,[1,2,3,4]) #求列表的乘积 24 >>> reduce(lambda x,y:10*x+y ,[1,3,5,7,9]) 13579 #执行过程 # reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
sorted 排序
>>> k=['Bob', 'ada', 'Hoo', 'boby', 'Yoki'] >>> sorted(k) ['Bob', 'Hoo', 'Yoki', 'ada', 'boby'] >>> >>> sorted(k,key=str.lower) #key函数自定义排序 ['ada', 'Bob', 'boby', 'Hoo', 'Yoki'] >>> l=[24,19,-1,-10] >>> sorted(l,key=abs) [-1, -10, 19, 24] #sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,
传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。 def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0 >>> sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]