python储存数据的容器_python容器数据类型和变量的缓存机制

一 .容器类型(str list tuple set dict)

1.1str(字符串)

转义字符: \+字符1.把有意义的字符变得无意义2.把无意义的字符变得有意义

\n ,\r\n 换行

strvar= "怀才就像怀孕,\r\n时间长了才能让人看出来"\t 缩进

strvar= "怀才就\t像\t怀孕,时间长了才能让人看出来"\r 把\r后面的字符串拉到当前行行首

strvar= "怀才就像怀孕,\r时间长了才能让人看出来"

# 元字符串 不产生转义,原形化输出字符串

pathvar = r"D:\python33视频课件\notepad++"

print(pathvar)

格式化字符串%d 整型占位符%s 字符串占位符%f 浮点型占位符

语法 :"" % (参数1,参数2,参数3)

1.2 list (列表类型)

**********特征:可获取,可获取,可修改**********

#1.定义空列表

listvar =[]print(listvar , type(listvar))#定义普通列表

listvar = [19,6.89,"你好",5-90j]#2.获取列表中的元素#正向索引 0 1 2 3

listvar = [19,6.89,"你好",5-90j]#逆向索引 -4 -3 -2 -1

res = listvar[2]

res= listvar[-2]print(res)#3.获取列表中最后一个元素#通过逆向索引下标

res = listvar[-1]print(res)#通过len来获取长度#len 可以获取容器中的元素个数(长度)

res =len(listvar)print(res)

length= res - 1 #4 - 1 = 3

res =listvar[length]#获取最后一个元素的索引下标 4 - 1

res = listvar[ len(listvar) - 1]print(res)#4.修改列表中的元素

listvar = [19,6.89,"你好",5-90j]

listvar[1] = "哈哈哈"

print(listvar)

1.3 tuple (元组类型)

***************特点:可获取,不可修改,有序***************

#1.定义一个空元组

tuplevar =()print(tuplevar , type(tuplevar))#定义一个普通元组#正向索引 0 1 2 3 4

tuplevar = ("李琦","朱培峰","方金顺","黄昌建","刘文博")#逆向索引 -5 -4 -3 -2 -1

#2.获取元组当中数据

res = tuplevar[3]print(res)#3.修改元组当中的数据? 不可以#tuplevar[0] = "123" error

#4.注意点

"""区分是否是元组,由逗号这个标识符来决定"""tuplevar= ("你好",)

tuplevar= (345,)

tuplevar= (345+5j,)

tuplevar= 1,2tuplevar= 5,

tuplevar= () #什么元素都不写,可以表达空元组的概念;

print(tuplevar , type(tuplevar))

1.4 集合(set) 交叉并补

**********************特点:无序,自动去重**********************

#1.定义一个集合

setvar = {"周杰伦","易烊千玺","王源","王俊凯"}print(setvar , type(setvar) )#2.集合特征: 无序#是否可获取集合中的元素? 不行#print(setvar[0]) error

#是否可修改集合中的元素? 不行#setvar[0] = "周润发"

#3.集合特征: 自动去重

setvar = {"周杰伦","易烊千玺","王源","王俊凯","王文","王文","王文"}print(setvar)#4.注意:定义一个空集合

setvar =set()print(setvar , type(setvar))

1.5 字典类型 dict

特点

"""字典里的数据以键值对的方式进行存储,表面上有序,实际上无序;

在python3.6版本之后,底层做了优化,存储时,记录了字典的定义顺序

在获取字典时,把无序存储的数据拿出来,按照定义字典的字面顺序重新排序;

语法: {键1:值1,键2:值2 , .... }"""

#1.定义一个字典

dictvar = {"haq":"胡安庆","llz":"刘灵镇","wsf":"王生福","xhr":"熊海瑞"}print(dictvar , type(dictvar))#2.获取字典中的元素

res = dictvar["llz"]

res= dictvar["xhr"]print(res)#3.修改字典中的元素

dictvar["xhr"] = "小黄人"

print(dictvar)#4.注意点

res ={}print(res, type(res)) #dict

集合和字典注意点:

集合的值和字典的键有数据类型上的要求

允许的数据类型 (可哈希的数据类型,不可变的数局类型): Number(int float bool complex) str tuple

不允许的数据类型(不可哈希的数据类型,可变的数据类型): list,set dict

字典的键和集合的值在底层内存存储时,使用了哈希算法

哈希算法的要求是该数据类型为不可变得数据类型才能够存储

哈希算法特点: 无序的散列;

为什么要提出哈希算法?

为了把数据均匀的存储在内存之后,减少哈希碰撞

让数据更快的存储在内存中.

二 . 变量的缓存机制

首先 --> Number 部分

1.对于整型而言,-5~正无穷范围内的相同值id一致

2.对于浮点数而言,非负数范围内的相同值id一致

3.对于布尔值而言,值相同情况下,id一致

4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况列外)

-->容器类型部分

1) 字符串和空元祖相同的情况下,地址相同

2) 列表,元组,字典,集合无论什么情况 id标识都不同(空元组列外)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值