1.range(起始位置,终止位置,步长)
range(终止位置) #range(5)=> [0,1,2,3,4]
range(起始,终止位置) #range(1,5)=> [1,2,3,4]
range(起始,终止,步长) #range(1,10,2)=> [1,3,5,7,9]
2.next(迭代器) 是内置函数
__next__ 是迭代器的方法
g.__next__() 带双下划线的魔术方法一般情况下不直接用
next(g) 之前所有的__next__都应该替换成next(g)
*带双下划线的所有的办法都可能和内置的函数有关系
3.iter(可迭代的)
__iter__
迭代器= 可迭代的.__iter__()
迭代器=iter(可迭代的)
4.open('文件名') 跟着操作系统走的
打开模式 默认是r
编码 默认是操作系统的默认编码
打开模式: r w a rb wb ab
编码:utf-8(100%)
5.input('字符串数据类型的参数,提醒用户你要输入的内容')
Python2
input() 还原你输入的值的数据类型
raw_input=py3.input
Python3
input()输入的所有内容都是数据类型
阻塞:等待某件事情发生,如果不发生一直等待
input的返回值就是用户输入的内容
输入的内容=input("提示")
6 print(要打印的内容1,要打印的内容2,要打印的内容3,sep='分隔符',end='结束符')
print('123','abc','aaa',sep="|") #123|abc|aaa
print(123,'abc','aaa',end = '@') #123 abc aaa@
f=open('file','w')
print(123,'abc',file=f) print的本质就是写文件 这个文件是pycharm的屏幕
f.close()
7.hash函数
哈希 可哈希(不可变数据类型) 不可哈希(可变数据类型)
哈希是一个算法,导致了字典的快速寻址
所有的数据要想得到不变的hash值,必须是一个不可变的数据类型
8.eval() 可以将字符串数据类型的Python代码执行.通过拼接字符串的方式来执行不同的代码--简化代码
evalexec 这个函数 不能直接操作文件当中读进来的 网络上传进来的 用户输入的
eval('print(1+2+3+4)') #10 #有返回值 能接收 ret = eval('1+2/3*4') #3.666666666666 print(ret)
9.exec()
exec('print(1+2+3+4)') #10 # 没有返回值 ret = exec('1+2/3*4') print(ret) # None
10.compile 编译 能够节省时间工具
11.help() 帮助你了解Python
方式一
输入help()进入帮助页面,输入数据类型,帮组我们打印具体的帮组信息
输入q退出帮助
方式二
print(help(str)) print(help('abc'))
12.callable() 判断某一个变量是否可调用
13.complex 复数
实数(有理数和无理数):世界还是那个存在的数
虚数:j
某一个数的平方是-1,那么这个数就是一个虚数的基础单位 j
复数=实数+虚数=a+bj
面试题:
复数不能比较大小
共轭复数:a+bj和a-bj是一对共轭复数
a+bj和a+bJ都是复数
数据类型:boolintflostcomplex
14.locals 本地作用域局部作用域 会随着位置的改变而改变
15.globals 全局作用域 永远不变 永远是全局
16.bin oct hex
a=256 十进制 print(bin(a)) 0b100000000 0b代表二进制 print(oct(a)) 0o400 0o代表八进制 print(hex(a)) 0x100 0x代表十六进制
17.abs 求绝对值,正数的绝对值是正数,负数的绝对值也是正数
18.divmod 商余函数(应用在 实现翻页功能)
print(divmod(10,3)) #(3,1) print(divmod(7,4)) #(1,3) print(divmod(8,3)) #(2,2)
19.round(小数,保留几位小数) 小数精确
Python 2.x中(完全的四舍五入)
Python 3.x中(更精准的计算方式)
20.pow(x,y,z) 幂运算幂余运算 x的y次方%z
print(pow(5,3,2)) #1 => 5**3%2=1
21.sum(可迭代的数字集,start),start是从哪个数开始加
print(sum((1,2,3,4),10)) #20 print(sum(1,2,3,4)) #10
22.minmax(iterable*args,key) 可以是一个函数的内存地址,key所做的事情就是根据你对每一项数据大小的需求来排序
print(min((1,2,3),(4,5,6))) #(1,2,3) print(min((7,2,3),(4,5,6))) #(4,5,6) def func(n): return n%6 ret=min(2,3,4,7,key=func) print(ret) #7
l = [{'name1':10},{'name2':500}] # # max函数 找到股价最高的那个字典, def func(dic): for k in dic: return dic[k] print(max(l,key = func)) #{'name2': 500}
l中的每一项都会作为参数传给func
max/min的求值会根据func的返回值来排序
23.reversed(list/tuple) 返回一个迭代器,为了节省内存
l = [1,2] l.reverse() print(l) #[2,1] ret = reversed([1,2,3]) # iterator print(ret)
reverse 是在原基础上修改:2000项的列表 不会产生额外的内存
reversed不修改原基础:不直接返回列表而返回迭代器,为了不占用更多的内存
24.slice 切片
l = [1,2,3,4,5,] print(l[1:4]) #[2,3,4]
25.format
print(format('test', '<20'),'alex') print(format('test', '>20'),'alex') print(format('test', '^20'),'alex') test alex test alex test alex
26.bytes 字节
# str --> bytes print('abc'.encode('utf-8')) #b'abc' print('你好'.encode('utf-8')) #b'xe4xbdxa0xe5xa5xbd' # bytes --> str b = b'xe4xbdxa0xe5xa5xbd' print(b.decode('utf-8')) #你好
网络上传输的数据:bytes
文件的传输:wb写字节 rb读字节 图片和视屏都是字节
27.bytearray 把一个字符串编成一个字节数组,较长的字符串的修改节省内存,修改行为必须依靠编码
ret = bytearray('abc'*10,encoding='utf-8') # 字节数组 print(ret) ret[0] = 102 # asc码 65A 97abcdef 你好 您好 print(ret) # bytearray(b'abcabcabcabcabcabcabcabcabcabc') # bytearray(b'fbcabcabcabcabcabcabcabcabcabc')
28.mrmoryview
29.ord/chr 字符和编码之间的转换
print(ord('a')) #97 print(chr(97)) #a
A 在65位
a 在97位
30.repr() 打印的时候输出这个变量的数据类型
31.len 计算长度
32.enumerate 枚举函数
for i in enumerate(['a','b','c'],1): print(i) #(1, 'a') (2, 'b') (3, 'c') goods_lst= [ {'name':'电脑','price':1999}, {'name':'鼠标','price':20}, {'name':'美女','price':20}, ] for good in goods_lst: print(goods_lst.index(good)+1,good['name'],good['price']) #1 电脑 1999 2 鼠标 20 3 美女 20 for good in goods_lst: print(good) #{'name': '电脑', 'price': 1999} {'name': '鼠标', 'price': 20} {'name': '美女', 'price': 20}
33.all参数iterable 只要有一个为假返回Flase
print(all((1,2,3,True))) #True print(all((1,2,3,0,True))) #False print(all((1,2,3,True,[]))) print(all((1,2,3,True,'')))
34.any参数iterbale 只要有一个为真返回True
print(any((1,2,3,True))) #True print(any((1,2,3,0,True))) #True print(any((1,2,3,True,[]))) #True print(any(({},False,0,[],''))) #False
35.zip 拉链函数 返回迭代器-节省内存
a = (1,2,3,4) b = ('a','b','c') c = ['111','222'] d = {'k1':'v1','k2':'v2'} ret = zip(a,b,c,d) print(ret) #迭代器 for i in ret: print(i) #(1, 'a', '111', 'k1') (2, 'b', '222', 'k2')
36.filter 筛选
ret = filter(None,[1,2,3,0,False]) # 只保留真的 print(ret) #<filter object at 0x0000019EA0C08240> for i in ret: print(i) #1 2 3
def func(i): if i % 2 != 0: return True l = [1, 4, 6, 7, 9, 12, 17] for i in filter(func,l): # 迭代l,每一个元素作为参数传给func,如果func的返回值为True,那么l中的这个元素就保留 print(list(i)) #1 7 9 17
def func(i): return type(i) is not dict l = ['sjkdhf',[1,2,3],{},()] # 去掉列表中的字典,用filter ret = filter(func,l) print(list(ret)) #['sjkdhf', [1, 2, 3], ()]
filter 就像 带着if条件的列表推导式
l = ['sjkdhf',[1,2,3],{},()] print([i for i in l if type(i) is not dict])
37.sorted() 排序 根据key对应的函数的返回值的大小来排序的
由于必须要知道后面的值是谁 才能排出顺序 所以结果就是排序后的结果而不是可迭代的
l = [{'name':'电脑','price':1999},{'name':'鼠标','price':2000}] #按照每一个字典中商品的价格从高到低排列 def func(dic): return dic['price'] l.sort(key=func,reverse=True) print(l) #[{'name': '鼠标', 'price': 2000}, {'name': '电脑', 'price': 1999}] new_l = sorted(l,key = func,reverse= True) print(new_l) #[{'name': '鼠标', 'price': 2000}, {'name': '电脑', 'price': 1999}]
38.map 一个迭代器中的每一个元素都需要去做同一个操作并返回一个结果组成一个新列表的时候map来处理
range(10)#内部的每一个值的平方组成的新列表 def func(num): return num**2 ret = map(func,range(10)) print(list(ret)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]