Python学习笔记

Python笔记整理

常量与变量

变量:记录实物的状态

特征  
	id:放映内存地址,内存地址不同id则不同
	type:记录实物的状态(类型) 不同类型的值记录不同状态
	value:值本身

变量名:

变量名应该做到见名知意
命名规范:字母、数字、下划线
命名风格:纯小写+下划线_
	例:student_name	

常量:不变的量

命名规范:命名以大写字母为常量(规范约定)

运算符:

/	结果带小数
//	只保留整数
%	取余数
**	次幂
!=	不等于

交叉赋值:

n,m = m,n

解压赋值:

x,y,z=[1,2,3]

数值进制转换:

bin()	转为二进制
oct()	转为八进制
hex()	转为十六进制
int()	转为十进制

基本数据类型

数字类型:整形int、浮点型float

字符串类型:str

" " 、' ' 引号内都是字符串(外层双引号,内层单引号)
\\ 转译为普通字符
\n 换行
\t 制表格
end='' 取消默认换行符,也可换其他结束符
字符串可以相乘
	print('hellow' * 10)

列表类型:list(索引对应值/位置/顺序)

可以按位置记录多个值
在[]内用逗号分割
['a','b','c']

字典类型:dict(key对应值/描述对应值)

在{}内用逗号分割 key:value
{'name':'liu','age':18,'gender':'male'}

布尔值:bool

ture	结果为真
false	结果为假

与用户交互

input会将用户输入的所有内容存成字符串

格式化输出:

%s:可以接收任意格式
%d:只能接收int

按照位置与%一一对应输出
'name is %s age is %s'%(liu,18)

按照字典与%一一对应输出
'name is %(name)s age is %(age)s'%{name:liu,age:18}

str.format兼容性好
'name is {name} age is {age}'.format(name=liu,age=18)

f'' 速度快。兼容形差(Python3.5版本后能使用)
f'我的名字是 {name} 我的年龄是 {age}'

可变不可变类型

可变类型: list、dict

不可变类型:int、float、str、boll

成员运算 in(判定元素是否存在)

区分可变不可变类型,不可变类型不动,可变类型产生新的地址

深浅拷贝

浅copy:list1=[]
		list3=list1.copy()
		值原封不动产生一个新的列表

深copy:import copy
		list3=copy.deepcopy(list1) 

while循环

break 立刻终止本层循环

while循环嵌套:每一层都必须配一个break

while True:
	while True:
    	while True:
        break
    break
break

退出while循环的方式:

条件改为False
break

while + continue:结束本次循环,直接进入下一次

while + else(在没有被break打断的情况下运行)

for循环(循环取值/迭代循环)

for  变量名 in 可迭代对象:
for i in range(10):
	执行代码

for控制循环次数:

range():顾头不顾尾
    range(1,10,1)   1:从1开始 10:10前的一个数为末尾 1:跨步为1
    range(len())

for循环嵌套:

外层循环一次,内层循环需要循环完毕才会开始下一次循环

for与while对比

1、相同之处:都是循环,for循环能干的事,while循环都能干
2、不同之处
    for循环次数取决于in后值的个数
    while循环次数取决于条件何时为假

元组tuple:就是一个不可变的列表(内存地址不可变)

按索引存放多个值,只用于读不用于改
():括号内用逗号分割开多个任意类型的元素
(,):如果元组中只有一个值,必须用逗号分割开
().index(''):按顺序查找索引,找不到报错
().count(''): 统计元素出现的个数

字符串str:

print('123456789'[0:10:2])  # 切片
print("=======a=======".strip("="))  # 去掉两边的=号
print("=======a=======".lstrip("="))  # 去掉左边的=号
print("=======a=======".rstrip("="))  # 去掉右边的=号

print("AaBbCc".lower())  # 全为小写
print("AaBbCc".upper())  # 全为大写

print("AaBbCc".startswith("A"))  # 判断首字符
print("AaBbCc".endswith("c"))  # 判断末尾字符

print("egon:18:male".split(":", 1))  # 从前往后分割为列表
print("egon:18:male".rsplit(":", 1))  # 从后往前分割为列表

l = ["aaa", "bbb", "ccc"]
print(":".join(l))  # 按照某个分隔符号,把字符串分割成列表

print("a b c d a b c d".replace("a", "A",1))    #更改字符

print("123".isdigit())  # 判断字符串是否为int

print("egon".center(50, '='))  # 居中填充
print("egon".ljust(50, '='))  # 左对齐填充
print("egon".rjust(50, '='))  # 右对齐填充
print("egon".zfill(10))

print("egon".capitalize())  # 首字母大写
print("Egon".swapcase())  # 大小写反转
print("egon age".title())  # 单词首字母大写

print('abc'.islower())  # 判断是否全为小写
print('abc'.isupper())  # 判断是否全为大写
print('abc123'.isalnum())  # 判断是否为字母或数字组合
print('abc'.isalpha())  # 判断是否全为字母
print('abc'.isidentifier())  # 判断名字是否符合规范

列表list:

索引:按位置/顺序存放多个值
可取可改:索引存在则修改对应的值,索引不存在则报错

往列表添加值:

[].append():在列表末尾加上值
[].insert(,):在列表插入值(索引,值)
[].extend([]):在列表末尾加入可迭代的值(字符串,列表)

删除列表中的值:

del l[x]:同用删除方法,只是单纯的删除
[].pop():不指定索引默认删最后一个,会返回删除的值
[].remove():根据元素删除

切片(顾头不顾尾):

[:]切片等同于浅copy
[0:10:1]

需要掌握的操作:

[].count(''): 统计元素出现的个数
[].index(''):按顺序查找索引,找不到报错
[].clear():清空列表元素
[].reverse():将列表反转
[].sort():默认从小到大升序排序
[].sort(reverse=True):设置为从大到小降序
    字符串比大小是按照ASCI码表的先后顺序对应位置一次比较

字典dict():

{}默认定义出来的是空字典
{}内用逗号分割开多个key:value,其中value可以是任意类型但key必须是不可变类型且不能重复
dict(a=x,b=x,c=x)
{}.fromkeys(,):快速初始化一个字典
len({}):统计个数

删除:

{}.pop:根据key删除,返回删除的key对应的值
{}.popitem:随机删除

{}.keys():字典中的key单独拿出来
{}.value():字典中的value单独拿出来
{}.item():用元组查看key:value

需要掌握的:

{}.clear():清空
{}.upddate():更新字典
{}.get():按照key取值,不存在则返回None
{}.setedfault():key存在则不添加,不存在就添加,返回valve

集合set():

1.元素为不可变类型
2.集合内元素无序,
3.集合内元素没有重复

取交集:{}&{}   {}.intersection()
取并集:{}|{}   {}.union()
取差集:{}-{}    {}.difference()
取对称差集:{}^{}  {}.symmetric_difference()
取父子集:{}>{}   {}=={}     {}.issubset()   
{}.issuperset()

其他方法:

{}.discard():删除
{}.module():删除 报错
{}.update():更新去重
{}.difference_update():取差覆盖
{}.add():单独添加元素

文件

with open(文件路径,mode='rt') as f:
f.read()

r模式:只读

文件不存在报错,文件存在时文件指针跳到开始位置
.read()一次性把所有内容从硬盘读到内存,指针位置读到结尾
r+文件不存在报错 写覆盖
readline:一次读一行	
readlines&read:一次读全部,把所有内容读入内存

w模式:只写

文件不存在新建空文档,文件存在时清空文件指针位于开始位置
writelines:写入可迭代多个值

a模式:只追加写

文件不存在新建空文档,文件存在时指针位于末尾位置

b模式:binary

1、读写都是以bytes为单位
2、可以针对所有文件
3、一定不能指定字符编码表

总结:

t模式简洁(针对文本文件)
b模式通用

指针移动:以bytes为单位

特殊情况:t模式下read读的是字符个数

f.seek(n模式):n指的是移动的字节个数
f.seek(9,0)(移动字数,移动模式)
f.seek(*,0)参照物是文件开头位置
f.seek(*,1)参照物是文件当前位置
f.seek(*,2)参照物是文件末尾位置,应该倒着移动
    1、2,模式不能在t模式运行

bytes类型:

1.字符串编码后的结果
2.b‘必须是英文’
3.b模式打开文件,f.read()读出的内容
posted @ 2020-07-27 16:49  None_c  阅读(66)  评论(0)    收藏  举报