列表推导式:
[ 变量(加工后的变量) for 变量i in 可迭代的数据类型 ]
l1 = [i for i in range(1,11)] print(l1) #输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#例一:30以内所有能被3整除的数 l3 = [i for i in range(31) if i % 3 == 0] print(l3) #输出:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30] ------------------------------------------------------------ #例二:30以内所有能被3整除的数的平方 l4 = [i**2 for i in range(31) if i % 3 == 0] print(l4) #输出:[0, 9, 36, 81, 144, 225, 324, 441, 576, 729, 900]
集合推导式,自带去重功能:
squared = {x**2 for x in [1, -1, 2]} print(squared) #输出:{1, 4} 由于在集合里,所以重复自动去掉
字典推导式:
#例一:将一个字典的key和value对调 mcase = {'a': 10, 'b': 34} mcase_frequency = {mcase[k]: k for k in mcase} print(mcase_frequency) #输出:{10: 'a', 34: 'b'}
列表套列表推导式:
#打印含有两个e的名字 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] name_l1 = [name for i in names for name in i if name.count('e') == 2] print(name_l1) #输出:['Jefferson', 'Wesley', 'Steven', 'Jennifer']
把列表解析的[]换成()得到的就是生成器表达式:
l1 = (i for i in range(1,11)) print(l1) print(l1.__next__()) print(l1.__next__()) #输出: <generator object <genexpr> at 0x0000002FF33BBE60> # 1 # 2
内置函数:
共有68个
print:
print('666',end='') print('666') print(1,2,3,4,5,sep='|') '''输出: 666666 1|2|3|4|5 print自带换行 end ="" 为空,不换行 sep 连接符 '''
dir:
dir() 查找对象的所有方法 print(dir([])) #打印:['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', ...]
locals() :将局部的变量储存起来
globals(): 将全局的变量,函数名,等等 储存起来.
ef func(): name = 'alex' print(locals()) print(globals()) func() #输出:{'name': 'alex'} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozenBF28>, '__spec__': None, '__annotat 。。。。。。
help(str): 将你查询的对象所有信息都拿出来.
abs(): 绝对值
print(abs(-1)) #输出:1
max(),min():
def func(ret): print(44) # 最大值 ret = max(1,2,-3,key=abs) #key = abs 代表所有数字的绝对值 print(ret) #最小值 ret = min([1,2,3]) print(ret) #输出:-3 1
sum(): 求和
#sum iterable,初始值 ret = sum([1,2,3],10) print(ret) #输出:16
callable() 判断此变量是不是函数名:
name = 'alex' print(callable(name)) def func(): print(666) print(callable(func)) #输出: False # True
hash(): 通过哈希表的规则,将对象转换成哈希值
all(): 可迭代对象里面的所有的值转化成bool值如果都是True则,返回True
print(all([1,2,3,0])) print(all([1,2,3])) #输出:False True
进制转换:
#十进制转化成二进制 print(bin(100)) # #将十进制转化成八进制 print(oct(9)) # #将十进制转化成十六进制 print(hex(33)) ''' 输出 0b1100100 0o11 0x21 '''
float :有限小数,无线循环小数,不包含(无线不循环小数)
print(1.35432,type(1.35432)) print(float(3)) #输出:1.35432 <class 'float'> # 3.0
divmod() 分页:
print(divmod(7,2)) #(商,余数) #输出:(3, 1)
enumerate()枚举:
l = ['手机','电话','充气娃娃',] for i in enumerate(l,100): print(i) ''' 输出: 元组,100是起始值 (100, '手机') (101, '电话') (102, '充气娃娃') ''' ------------------------------------ #如果用两个值接收,则没有括号 l = ['手机','电话','充气娃娃',] for i,j in enumerate(l,100): print(i,j) ''' 输出: 100 手机 101 电话 102 充气娃娃 '''
eval(): 有返回值 除去字符串两边的引号,返回里面的内容
exec(): 没有返回值 除去字符串两边的引号,执行里面的代码
s = "{'name':'alex'}" s1 = "1+2+3+4" print(eval(s),type(eval(s))) #{'name': 'alex'} <class 'dict'> print(exec(s),type(exec(s))) #None <class 'NoneType'> print(eval(s1)) #10 code = '''for i in range(10): print(i)''' print(exec(code)) # 0,1,2,3,4,None
any :和all对应 有一个True 就True
ord和char相对应:
#ord 输入字符,返回unicode对应的编码位置 print(ord('a')) #97 print(ord('b')) #98 print(ord('中')) #20013 #----------------------------------------------- # chr 输入编码位置,返回unicode对应的字符 print(chr(97)) #"a" print(chr(20013)) #"中" print(ascii('a')) #'a' print(ascii('国')) #'u56fd'
#%r repr 原形毕露:
name = 'alex%r'%('sb') print(name) print(repr('[1,2]')) print('[1,2]') ''' 输出: alex'sb' '[1,2]' [1,2]
'''
#slice() 切片:
l1 = [11,22,33,44] print(l1[1::2]) #[22,44] sl = slice(1,4,2) print(l1[sl]) #[22,44]
reversed(): 倒叙,形成一个新的迭代器
l1 = [11,33,22,44,'alex'] l2 = reversed(l1) for i in l2: #l2是迭代器需循环打印 print(i)
l1 = [11,33,22,44,'alex'] l1.reverse() print(l1) #输出:['alex', 44, 22, 33, 11]
重要的内置函数:
max:
dic = {3:200,2:30,1:100} def func(x): return x l1 = max(dic,key=func,) print(l1) #输出:3 比较的是k #------------------------- dic = {3:20,2:30,1:100} def func(x): return dic[x] l1 = max(dic,key=func,) print(l1) #输出:1 比较的是value 打印的是key
zip:(可以理解为 拉链方法)可以放置多个可迭代对象,以最少的可迭代对象的个数为基准,返回一个迭代器
l1 = [1,2,3,4,5] l2 = ['wusir','alex','taibai'] l3 = ['*',"**","***"] print(zip(l1,l2,l3)) #输出:<zip object at 0x00000065E3C66B88> l4 = zip(l1,l2,l3) for i in l4: print(i) ''' (1, 'wusir', '*') (2, 'alex', '**') (3, 'taibai', '***') '''
map:是把可迭代对象的每一个元素,分别传入前面函数,返回迭代器
def func(x):return x*x for i in map(func,[1,2,3,-4,-5,-7]): print(i) ''' 1 4 9 16 25 49 '''
filter:(过滤)如果function处理某元素时候返回true,那么该元素将作为迭代器list的成员
print([i for i in [1,2,3,4,5] if i % 2 == 0]) #[2, 4] 循环过滤出来的是列表,占内存 def func(x):return x % 2 == 0 for i in filter(func,[1,2,3,4,5]): print(i) #filter返回的是迭代器,不占内存
sorted: 排序 返回的是列表
l1 = {2,4,3,1,6,5} l2 = (2,4,3,1,6,5) l3 = [2,4,3,1,6,5] print(sorted(l1)) print(sorted(l2)) print(sorted(l3)) ''' [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6] '''
带函数的sorted:
li = ['fsdafsa','fddsaf','qqq','fgasjdlg;dsjfg'] def func1(x):return len(x) for i in sorted(li,key=func1): print(i) ''' qqq fddsaf fsdafsa fgasjdlg;dsjfg '''