一、列表
list()
变量可以存储一个元素,而列表是一个“大容器”可以存储N多个元素,程序可以方便的对这些数据进行整体操作
列表相当于其他语言中的数组
列表元素按顺序有序排序
列表可以存放重复数据
任意数据类型混存
根据需要动态分配和回收内存
添加一个元素append
添加多个元素extend
在任意位置添加一个元素insert
remove从列表中移除一个指定元素,如果有重复的元素只移除第一个元素
pop根据索引移除元素如果不指定索引会删除列表的最后一个元素
del清除列表中的所有元素
sort()默认升序排列参数reverse=True表示降序排列
sorted()对列表进行排序,将产生一个新的列表对象
列表生成式lst[iforiinrange(1,10)]
二、元组集合
tuple()
不可变序列:字符串、元组
不可变序列是没有增删改的操作
如果元组中只有一个元素,逗号不能省T3=(python,)
set()集合
内置数据结构
可变类型的序列
add()一次添加一个元素
update()至少天机啊一个元素
remove()一次删除一个指定元素
discard()一次删除一个指定元素,元素不存在不报异常
pop()一次只删除一个任意元素
clear()清空集合
一个集合是否是另一个集合的子集issubset()
一个集合是否是另一个集合的超子集issuperset()
两个集合是否含有交集isdisjoint()
交集intersection()
并集union()
差集difference()-
对称差集symmetric_difference()^
集合生成式s={i*iforiinrange(10)}
三、字符串
字符串驻留机制的优缺点:
当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,
因此拼接字符串和修改字符串是会比较影响性能的。
在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,
只new一次对象,效率比“+”效率高
查找
index()查找字串substr第一次出现的位置,如果查找的字串不存在时,则抛出ValueError
rindex()查找子串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError
find()查找子串substr第一次出现的位置,不存在返回-1
rfind()查找子串substr最后一次出现的位置,不存在则返回-1
转换
upper()把字符串中所有字符转换为大写字母
lower()把字符串中所有字符转换为小写字母
swapcase()把字符串中所有大写字母转换成小写字母,把所有小写字母转换成大写字母
capitalize()把第一个字符转换为大写,把其余字符转换成小写
title()把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写
对齐
center()居中对齐
ljust()左对齐
rjust()右对齐
zfill()右对齐使用0填充
分割
split()从字符串的左边开始分割,默认的分割字符是空格字符串,返回的值是一个列表maxsplit指定分割多少
rplit()从右侧开始分割
判断
isidentifier()判断字符串是否是合法的标识符
isspace()判断字符串是否全由空白字符组成(回车、换行、水平制表符)
isalpha()判断字符串是否全是字母
isdecimal()判断字符串是否全啥十进制数字组成
isnumeric()判断字符串是否全由数字组成
isalnum()判断字符串是否有字母和数字
replace()第一个参数替换给第二个
join()将列表或者元组中的字符串合并为一个字符串
编码转换
encode(encoding=GBK)编码
decode(encoding=GBK)解码
四、函数
函数:执行特定任何以完成特定功能的一段代码
服用代码隐藏实现细节提高可维护性提高可读性便于调试
函数返回多个值时,结果为元组
*args(一个星号传递可变的位置参数,返回值是一个元组)
**args(两个星号传递个数可变的关键字参数,返回值是一个字典)
五、BUG
try:
exceptBaseExceptionase:
print(出错了,e)
else:
finally:
traceback模块打印异常信息存储到日志文件中
六、类
类的组成:类属性、实例方法、静态方法、类方法
在类之外定义的称为函数,类之内定义的称为方法
类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
类方法:使用
classmethod修饰的方法,使用类名直接访问的方法静态方法:使用
staticmethod修饰的方法,使用类名直接访问的方法封装:提高程序的安全性
将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
这样,无需关心方法内部的具体实现细节,从而隔离了复杂度。
在python中没有专门的修饰符用于属性的私有,如果该属性不希望再类对象外部被访问,前边使用两个"_"。
继承:提高代码的复用性
多态:提高程序的可扩展性和可维护性
七、字典
dict()
python内置的数据结构之一,与列表一样是一个可变序列
以键值对的方式存储数据,字典是一个无序的序列
python中的字典是根据key查找value所在的位置
字典的键值(key)不能重复,值(value)可以重复
字典中的key必须是不可变对象
字典也可以根据需要动态地伸缩
字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典生成式:
items=[Fruits,Books,Others]
prices=[96,78,85]
d={itempriceforitem,priceinzip(items,prices)}
Python为字典类型提供了items()方法,items()方法会将字典里的所有的键与值一起返回。
例如,餐馆有一个菜单包含了菜名和价格信息,菜名和价格顾客都需要知道,可以通过遍历输出menu字典的键和值来实现:
对于餐馆中的厨师来说,他们并不想要知道菜的价格,只需要知道菜名然后将其做出来就行。所以对于厨师来说,
我们需要遍历menu字典中的所有菜名。Python为字典类型内置了keys()方法,该方法会将字典里的键遍历出来。
对于餐馆中的收银员来说,他们可能并不想知道菜单的菜名,只需要知道菜的价格,然后收账即可。
所以对于收银员来说,我们需要遍历menu字典中的所有菜的价格。Python为字典类型内置了values()方法,该方法会将字典里的值遍历出来。
七、深拷贝和浅拷贝
变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象
浅拷贝:python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不烤贝,
因此,源对象与拷贝对象会引用同一个子对象
深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,
源对象和拷贝对象所有的子对象也不相同
八、常用的内容模块
sys与python解释器及其环境操作相关
time提供与时间相关的各种函数
os访问操作系统服务功能
calendar与日期相关的各种函数
urllib读取来自网上(服务器)的数据
json使用json序列化和反序列化对象
re用于在字符串中执行正则表达式匹配和替换
math标准算术运算
decimal进行精确控制运算精度、有效位数和四舍五入操作的十进制运算
logging灵活的记录事件、错误、警告和调试信息等日志信息的功能
九、os模块操作目录相关函数
getcwd()返回当前的工作目录
os.system()打开系统文件
os.startfile()打开应用程序
listdir(path)返回指定路径下的文件和目录信息
mkdir(path[,mode])创建目录
makedirs(path1/path2...[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path2......)删除多级目录
chdir(path)将path设置为当前工作目录
十、os.path模块操作目录相关函数
abspath(path)用于获取文件或目录的绝对路径
exists(path)用于判断文件或目录是否存在,如果存在返回True,否在返回Flase
join(path,name)将目录与目录或者文件名拼接起来
splitext()分离文件名和扩展名
bashname(path)从一个目录中提取文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)用于判断是否为路径