格式化输出
单个变量:'你好,s%'%name
多个变量:'你好,s%,我是s%'%(name1,name2)
运算符
算术运算:+ - * / // % **
比较运算:> < >= <= == != (根据值比较)
赋值运算:= += -= *= = %=
逻辑运算:not and or
身份运算:is 、not is (根据内存地址比较)
注:
a == b 值比较
a is b 内存比较
通用操作:in、not in(是否存在)
字符编码
ASCII 只有键盘上有的盘符
UTF-8 可变长万国码 (省空间)
unicode 万国码 (浪费空间)
gbk 中国国标码
注:
str ---> utf-8
字节类型 = 字符串.encode('utf-8')
utf-8 ---> str
字符串 = 字节类型.decode('utf-8')
文件存储不可能是Unicode字符编码、可以是utf-8、gbk等
内存中使用的是Unicode字符编码
基础数据类型
字符串
索引 从0开始
切片 [start🔚step] 左闭右开区间 'abcd'[1:3] ==> 'bc'
去空白符:strip (去掉两端的空白符 \t \n)
切割:split (根据某一个指定的字符进行切割)
合并:join ('|'.join(['1','2','3']) 拼接结果> '1|2|3')
替换:replace ('abcd'.replace('a','A',n),将abcd字符串中的前n个'a'替换成'A'
转换大小写:upper 和 Lower 字母的大小写转换
数字字母判断:isdigit 和 isalpha 判断是否为纯数字或纯字母
开头结尾判断:startswith 和 endswith 判断开头和结尾是否符合要求
列表
索引 正索引:0~n 倒索引:-1~-n
切片 正切:L[:::] 反切:L[::-1]
增:append、insert
删:pop(默认删除最后一个值) remove('value') clear(清空列表)
改:L[index] = 'new_value'
查:print(L[index])
判断某个值是否在列表中:True or False = 'value' in list
for i in list:
print(i)
字典 (永远通过key找值,key必须可hash)
d = {'K':'V'}
增: d['new_k'] = 'new_vlaue'
删: d.pop('old_k') del d['old_k']
改: d['old_k'] = 'new_value'
查: print(d['k']):只输出,无返回值 print(d.get('k')):有返回值
循环:
for k in d:
print(k)
print(d[k])
元祖 (不可变的列表)
(1,)
(1,[],{}) # 元祖中所有不可变数据类型都不能发生改变,但可变数据类型可以变化
索引
切片
查
集合
求多个集合之间的关系,并集(|),交集(&),差集(-)(补集)
去除重复内容(去重)
集合中的所有的元素和字典的key相同,都需要做到可hash
注:
s1 = {'1','2','3'}
s2 = {'1','2','4'}
交集:s1 & s2 ====> {'1','2'}
并集(去重):s1 | s2 ====> {'1','2','3','4'}
差集:s1 - s2 ====> {'3','4'}
基础数据类型分类方式:
分类记忆一:
数字类型:bool int float
序列类型:str tuple list --索引 切片
散列类型:dict set --无序的,并且元素,key可hash
分类记忆二:
可变数据类型(不可hash):list dict set
不可变数据类型(可hash):bool int float str tuple
range
range(start, end, step):左闭右开
range(100)————>循环生产1-99的值
for
for i in 有多少个元素的数据类型:
在循环的时候,数据类型有多个元素,就循环多少次
这个缩进内部的代码就执行多少次
且每一次循环,这个i会以此被赋值为这个数据类型中的元素
break 跳出循环
continue 结束本次循环
else 当整个for循环没有被break的时候,就执行这句话(正常执行完全部for代码后执行)
while ()
while 条件:
函数体
(break || continue)
else 当没有被break,且执行到不满足条件时执行该处
深浅拷贝:
浅拷贝:(值拷贝)
第一层发生变化的所欲的列表互不干涉,如果是某个可变类型元素内部值变化,所有的对象共享
切片 list = list[:]
list = list1.copy()
list = copy.copy(list1)
深拷贝:(地址拷贝)
不管这个变量多少层,只要互相是深拷贝,那么这些数据永远没有交集
互相之间的改变都不发生互相的影响