Loading

python总结

list,tuple,dict,set的区别

list:可变数据类型,有序,支持索引。支持存储数据极多
tuple: 不可变数据类型,有序,支持索引
dict: 可变数据类型,无序(由于字典保存数据使用的是Hash存储方式,hash表的数据结构注定它就是无序的 故字典无法使用切片方式),以键取值
set:是一个无序的不重复元素序列,不支持索引,切片,连接

可变数据类型与不可变数据类型区别:
可变数据类型:list(列表)、dict(字典)、set(集合,不常用)
不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)

可变数据类型更改值后,内存地址不发生改变。不可变数据类型更改值后,内存地址发生改变
a = [1,2,3,4,4]
print(a,id(a))
a.append(3)
print(id(a))
内存地址没有发生改变

b = 1
print(id(b))
b = 2
print(id(b))
内存地址发生改变


dic = {"a":123,"b":324}
a = list(dic.keys())  #不用列表转化一下就是dict_keys对象,需要列表转化一下
print(a[0])

文件操作

f(文件句柄)=open("file(文件的路径,位置)",mode="(操作文件模式)",encoding="文件编码格式")

r,w,a(重要) 读,清空写,追加
rb,wb,ab(次要) 按字节读取,

f = open('a.txt','r',encoding='utf-8')
print(f.read()) # 读取整页,字符串
print(f.readline()) #读取一行,字符串形式
print(f.readlines()) # 读取所有但是以列表展示,并且换行有/n

深浅拷贝

#赋值  : 将变量和值在内存中形成映射指向关系(浅拷贝)
#浅拷贝 : 只拷贝第一级里所有的元素 copy.copy (修改第一层不进行改变,第二层可变数据类型共享内存跟着改变)
#深拷贝 : 为所有层级的元素都单独开辟新空间 copy.deepcopy() (地址:原不可变数据只是暂时的指向,一旦改变内存地址改变,可变的数据独立开辟新空间)

细品这个代码
import copy
lst1 = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst1)
lst1[0] = 100
print(lst1)
print(lst2)
print(id(lst1[0]))
print(id(lst2[0]))
posted @ 2020-12-29 10:28  封灵寒武  阅读(13)  评论(0编辑  收藏  举报