Python基础(3)_可变对象与不可变对象、列表、元祖和字典
可变对象与不可变对象
实例被创建后,身份和类型是不可变的,
如果值是不可以被修改的,则是不可变对象
如果值是可以被修改的,则是可变对象
#在id不动,type也不动,value被修改了,则称为可变
#可变指的是:在id和type不动的前提下,值可变
对象的属性和方法
属性就是对象的值,方法就是调用时将在对象本身上执行某些操作的函数,使用.运算符可以访问对象的属性和方法,如
a=3+4j
a.real
b=[1,2,3]
b.append(4)
7 身份比较,类型比较,值比较
x=1
y=1
x is y #x与y是同一个对象,is比较的是id,即身份
type(x) is type(y) #对象的类型本身也是一个对象,所以可以用is比较两个对象的类型的身份
x == y #==比较的是两个对象的值是否相等
变量的赋值操作
- 链式赋值:y=x=a=1
- 多元赋值:x,y=1,2 x,y=y,x
- 增量赋值:x+=1
不依赖索引的取值,迭代方式取值
t=(1,2,3)
for i in t:
print(i)
分类:
Python中对象的赋值都是进行对象引用(内存地址)传递
使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用.
如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝
对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说
如果元祖变量只包含原子类型对象,则不能深拷贝,看下面的例子
一、列表
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
特性:
1.可存放多个值
2.可修改指定索引位置对应的值,可变
3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
列表创建
list_test=[’lhf‘,12,'ok']
或
list_test=list('abc')
或
list_test=list([’lhf‘,12,'ok'])1
列表常见操作函数:
print(l[0]) #列表取值 len(l) #计算列表长度 l[1:3] #切片 注:切片是读操作,并不会修改原来的数据 append() #追加 ,默认追加的元素在最右 l.append('alex') #向列表l中追加元素‘alex’,加在最右 insert() #插入,使用时需指定插入位置 l.insert(0,'alex') #向列表l的第一个索引位置追加元素‘alex’ pop() #删除,默认删除最后一项,即最右边元素,可指定位置 l.pop(0) #删除列表第一个元素 print(l.pop(0)) #输出打印刚刚删除的元素 in #包含 'alex' in list #判断元素‘alex’是否在列表中,返回值为True或者False 列表的其他操作 index() #查看某一元素的索引号,查不到报错 extend() #扩展列表 l.extend([1,2,3]) #将列表[1,2,3]追加到列表l,合并为一个列表, remove() #删除元素,默认从头删(即从左边删) l.remove('a2') #指定元素删除 sort() #排序,从小到大排序,无返回值 reverse() #反转操作,无比较[1,2,3,4]>>[4,3,2,1]
二、元组
定义:与列表类似,只不过[]改成()
特性:
1.可存放多个值,元组的元素可以是任意数据类型
2.不可变
3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
元组创建
ages = (11, 22, 33, 44, 55)
或
t = tuple((11, 22, 33, 44, 55))
元祖常见操作函数:与列表类似
t=('a','b',1,(3,4))
print(t[4][0]) #取值
print(t[1:3]) #切片
print(len(t)) #长度
print('a' in t) #包含,返回值True或者Fales