python基础----数据类型续

216 阅读3分钟

地址引用与垃圾回收

变量的==地址引用==

a = "jack"
b = a
a = "tom"

# b 的值?

在这里插入图片描述

==删除引用==

a = "jack"
b = a

del a
del b

在这里插入图片描述

当一个对象没有被引用时,python的垃圾回收机制就会将当前对象销毁,释放内存。

查看对象内存编号,id(obj)

判断对象的类型

在python程序中,经常需要判断obj的类型。 常用方法:

type

#type
type(obj) is int
type(obj) is float
type(obj) is str
type(obj) is bool
type(obj) is None  #None是一个唯一的对象,表示空值
type(obj) is list
type(obj) is tuple
type(obj) is dict
type(obj) is set
type(obj) is not int

这里的==is==判断是否同一个对象;==判断是否值相同。

isinstance

a = 24
isinstance(a,int)
isinstance(a,(int,str,bool)) #满足是其中一个类的实例,返回True

issubclass(int,object) #判断是否是子类

三元操作符

a = 1
b = "jack"
c = a if a else b 

列表的增删改查、分片

alist = ["jack","tom","lucy","jack"]
alist.tab #查看方法
alist[1:3] #["tom","lucy"]
alist[::-1] #逆序
alist[::2] #指定间隔["jack","lucy"]

练习:

  1. 查找到alist中第二个”jack“的索引值,并将jack改为jack2.
  2. 分片实现alist 的逆序
  3. 打印出alist中索引为奇数的值
  4. 对alist本身进行逆序排序

答案:

#1.
alist.index("jack",alist.index("jack")+1)
#2.
alist[::-1]
#3.
for i in range(len(alist)):
	if i%2 != 0:
		print(alist[i])

#4. 本身排序
alist.sort()  #返回None
alist.reverse()

元组使用及不可变

引用地址不可变,一般存储只读的数据 在这里插入图片描述

字符串

s = r"原始字符串,不转义"
s.tab #查看方法
s.capitalize() #大写第一个字符
s.title() #大写每一个单词的首字母
s.center(100,"*") #居中
s.ljust(100,"*") #长度100,左对齐,不够补*
s.rjust(100,"*")
s.upper() #转为大写
s.lower()
s.islower() #是否全部小写
s.isupper()
s.startswith("xxx",start,end)
s.endswith("xxx",start,end)

#字符串的格式化
"name is {0} , age is {1}, this name {0}".format("jack",25)

"name is {name} , age is {age}, this name {name}".format(name="jack",age=25)

"name is %s,age is %d"%("jack",25)

#查找
s.find("xxx",start,end) #返回索引/-1
s.index("xxx",start,end) #返回索引/异常ValueError

s.isdigit() #是否数字,(整数)
s.isspace()
s.join(["jack","tom"]) #使用s去拼接列表中的项目

s.strip() #去除两边的空格
s.strip("xx")#去除两边的xx
s.rstrip("xx")
s.lstrip("xx")

s.replace("old","new",count=num) #替换几次,默认全部
s.split("xx",maxsplit=1) #以xx分割字符串,最多分割一次;默认全部

练习: pending

字典

key-value 存储,无序的容器数据结构 key唯一且不可变类型,如"name"/ 1/1.0/(1,2,3) 查询速度快,时间复杂度O(1)

d = {"name":"jack"}
d1 = dict(name="tom")
d2 = {}.fromkeys([1,2,3],None)

#插入
d["age"] = 25
d.setdefault(key,value) #原来无此key则写入,并返回value; 否则不写入,只返回原始的value

#删除
d.pop(key)
d.popitem()
del d[key]

#更新
d.update(key=value) #跟新一个key
d.update({"name":"jack","age":25}) #会覆盖原有的key

#查询
if key in d:
	d[key]
	
d.get(key,None) #查询,无则返回None/其他

d.keys()
d.values()
d.items()

集合

无序、去重的容器数据结构 存储不可变的数据类型

set1 = set()
set1.add(5)
set1.add([1,2,3]) #error

#删除
set1.discard(5) #存在则删除,不存在则什么也不做
set1.pop() #随机删除
set1.remove(5) #不存在,则报错
5 in set1  #是否包含

#集合不能索引操作

#集合的关系操作
#交集
s1 & s2
#差集
s1 - s2
#并集
s1 | s2
#异或 属于s1不属于s2 | 属于s2不属于s1
s1 ^ s2
s1.issubset(s2)
s2.issuperset(s1)
s1.isdisjoint(s2) #是否无交集

上一篇:python基础----数据类型与结构
下一篇:python与二进制