[入门-2] 基础类型之元组

元组和列表很像,唯一差别是不可变性,可以作为字典的键

基础操作

#create
aTuple = (123, "abc", (45,6.7,'tuple'),['ds', 6.7, 89],None)
bTuple = (123,)
tuple('axvsaf')
#access
aTuple[1:4]
aTuple[1][2]
#update,虽然无法改变,但是通过构造另一个元组来完成修改功能
aTuple = aTuple[0], aTuple[1], aTuple[-1]
cTuple = aTuple + bTuple
del aTuple

操作符和内建函数

#create,*,+
t = ()
t * 2
t += ()
#成员关系
in 
not in
#内建函数
len() max() min() str() cmp() list()
#操作符
==
<
>
#Notice:排序,替换,更新,添加等操作元组不支持,因为这些方法都和可变性有关,而元组是不可变的

元组的特殊特性

  • 传递参数给其他组件API的时候,防止被修改,传入元组
  • 通过list和tuple方法转换
  • 字典的键
  • 元组的+概念,可以修改扩充元组
  • 元组内部可以有list,list是可以修改的,可以修改aTuple[0][1]这种
  • 默认集合类型是元组,即没有[],也没有(),也没有{}的时候,默认是()元组
  • 单一元素的元组要用’,’,因为()被重载了,用作分组操作符,即(‘xse’,)
  • 所有函数返回的多对象(不包括有符号封装的),都是元组类型,建议显示使用(),或其他[]
def foo1():
   pass
   return obj1,obj2,obj3 
def foo2():
   pass
   return [obj1,obj2,obj3]
def foo3():
   pass
   return {1:oj1,2:obj2,3:obj3} 

深拷贝和浅拷贝

  • 浅拷贝就是创建了一个新的对象和原对象一样,只是原对象的引用,以下操作默认是浅拷贝
    • 完全切片操作[:]
    • 利用工厂函数,list(),dic(),tuple()…
    • copy.copy方法
  • 深拷贝内存空间也复制了一份,copy.deepcopy()方法
  • 非容器类型(数字,字符串,原子类型如代码、类型)没有copy的说法,因为浅拷贝是用完全切片来完成的的
  • 如果元组中包括了原子类型,那么对它的深拷贝将不会进行
  • 注意很有意思的是,字符串,数字那些不可变的类型,根本不存在深拷贝浅拷贝的说法,为什么呢,因为一旦改变,就是整体的改变,即重新建立新的对象,旧的就由垃圾回收机制配合引用计数自行销毁了

Reference

Python核心编程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值