python 笔记
1.数据类型与运算符
数据类型:
数值型:int,float,complex,bool
序列对象:字符串 str,列表 list,元组 tuple
键值对:集合 set,字典 dict
进制函数:二进制 bin(10) ,八进制 oct(10) ,十六进制 hex(10)
运算符优先级:a + b > x and y 先算数再比较最后逻辑
熟练运用括号,不影响性能,并且更容易直接理解
2.if中0或空容器或None都可以代表false
for i in range(5) print(i) if i > 3: break else: print('else') #当循环正常执行完毕时则执行else,循环非正常结束或被打断时则不执行
3.类型
type('abc') == str 等同于 isinstance('abc',str)
O(n) 时间复杂度
O(1) 时间复杂度
4.字符串
lst = " python是个好东西 " lst.capitalize() #将字符串的第一个字母变成大写 lst.lower() #全部小写 lst.upper() #全部大写 lst.lstrip() #去掉左边空格 lst.rstrip() #去掉右边空格 lst.strip() #去掉两边空格
格式化输出:
print('%s' % '周杰伦') #%s 字符串输出
print('%f' % 1.234) #%f 小数输出
print('%d' % 5) $%d 整数输出
print("我叫{},今年{}岁,我喜欢{}".format("周杰伦",28,"周润发")) #按位置格式化输出 print("我叫{0},今年{2}岁,我喜欢{1}".format("周杰伦","周润发",28)) #指定位置 print("我叫{name},今年{age}岁,我喜欢{singer}".format(name="周杰伦",singer="周润发",age=28)) #指定关键字
字符串条件判断:
str.isalnum() #是否字母和数字组成 str.isalpha() #是否是字母组成 str.isdigit() #是否是数字组成
5.随机数模块
random.randint(1,2) #在1和2中随机取值 random.randrange(1,2) #在1和2中随机取值,但前包后不包
lst = list(range(1,10))
random.choice(lst) #从列表中随机取一个值
6.列表
num = list(range(1,10))
3 in num #查找列表中存不存在指定元素,返回True或False,常用 num.append(10) #在列表尾部增加一个元素 num.insert(1,1) #在指定索引位置增加一个元素 num.extend(range(15,20)) #在列表尾部增加多个元素 print(num)
num.pop(2) #括号为空时删除最后一个元素并返回删除的元素,括号内引用列表中的索引时删除指定索引位置的元素并返回删除的元素
num.remove(9) #删除指定元素
del lst[1:4] #切片删除,包头去尾
num.clear() #删除所有元素,剩下一个空列表
print(num)
num.sort() #排序,默认升序
num.sort(reverse=True) #降序
num.reverse() #列表反过来
7.深浅拷贝
t1 = [1,[2,3],4] t2 = t1 print(t1,t2) t2 = t1.copy() print(t1,t2) #以上两种虽然看着相似,但实际不同,直接将t1赋值给t2等于是将t2指向了t1,内存中两者指向的是同一个内存地址,而copy则是重新创建出一个新的对象 t1[1][1] = 5 print(t1,t2) t1[0] = 3 print(t1,t2) #以上这种现象称为浅拷贝,即只拷贝简单元素,复杂元素(此例中的嵌套列表)只拷贝过来一个内存指针,即t2中的复杂元素仍然指向t1中复杂元素在内存中的地址
import copy t3 = [1,[2,3],4] t4 = copy.deepcopy(t3) #深拷贝 t3[1][0] = 5 print(t3,t4) #深拷贝中所有的元素都会在内存中重新创建出一个新的对象,即将t3中的复杂元素改变了,t4中不再跟着改变,因为t4中的复杂元素是在内存中新建的
8.