python元祖 为什么不可变_Python基础(3)_可变对象与不可变对象、列表、元祖和字典...

本文详细介绍了Python中的可变对象(如列表)与不可变对象(如元组)的区别,包括它们的身份、类型和值的不变性。重点讲述了列表和元组的操作,如取值、切片、插入、删除、排序等,并探讨了浅拷贝与深拷贝的概念。此外,还提供了多个示例来帮助理解这些概念。
摘要由CSDN通过智能技术生成

可变对象与不可变对象

实例被创建后,身份和类型是不可变的,

如果值是不可以被修改的,则是不可变对象

如果值是可以被修改的,则是可变对象

#在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)

分类:

b1e9d805c0c2e931180eb5563f8b610b.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值