python元组

元组

一、元组是不可变类型的列表。

思考:有列表了,为什么还要创建个元组?

程序需要考虑性能。元组要比列表更加的轻量,变相的说:元组的性能优于列表。
Python在后台有一个垃圾回收机制,对静态数据(不可变)做一些资源缓存,垃圾回收机制的存在,
使得一些不被使用的变量释放出它所占用的内存,返还给操作系统,以便其他变量或其他应用使用。
对于静态数据,例如元组,如果它不被使用并且所占内存空间很小时,Python不会将其回收,
会暂时缓存这部分内存,这样,下次再创建同样大小的元组时,不需要再向系统申请,可以直接拿过来使用,
这样就大大加快了程序的速度。

二、元组和列表性能比较

import time

start1 = time.time()
x = [1, 2, 3, 4, 5]
end1 = time.time()
print(start1 - end1)

start2 = time.time()
y = (1, 2, 3, 4, 5)
end2 = time.time()
print(start2 - end2)

timeit --> 也能够测试程序的执行时间

import timeit

t1 = timeit.Timer('x = [1, 2, 3, 4, 5]')
# timeit()方法有个默认值number,number的默认值为1000000,也就是说,
# 调用timeit方法变相的相当于将Timer类接收到的一小段代码执行1000000次,得到最终的时间累计和。
print(t1.timeit())
t2 = timeit.Timer('y = (1, 2, 3, 4, 5)')
print(t2.timeit())

存在即合理。

三、思考:C语言中两个变量交换值

a = 100
b = 200
t = a
a = b
b = t
print(a, b)
a, b = b, a
print(a, b)

四、元组的打包操作和容器的解包操作

x = 1, 2, 3
print(x)

在Python中,允许一个变量同时等于多个值,这多个值会被打包成元组。

五、解包操作

i, j, z = x
print(i, j, z)

Python中两个变量和三个变量值的交换是应用了Python字节码指令中的
ROT_TWO和ROT_THREE指令,当需要交换值的变量大于三时,才是应用了解包和打包操作。

六、更高级的解包操作

x = (1, 2, 3, 4, 5)

情况一:解包的变量和容器中元素个数相同

i, j, z, a, b = x
print(i, j, z, a, b)

情况二:解包的变量数量小于容器中元素的个数
*,放在变量前,可以使这个变量变成不定长变量

i, *j, z = x
print(i, j, z)

情况三:解包的变量数量大于容器中元素个数(几乎遇不到)

注意:如果解包操作涉及到不定长变量,不定长变量只能有一个。

x, y, *m, n = [11, 22, 33, 44, 55]
a, b, *c, d = [1, 2, 3]
# 问:x, y, m, n, a, b, c, d分别是多少?
print(x, y, m, n, a, b, c, d)

七、元组的相关方法

  • max、min、count、sum、sorted、index等在元组中同样适用。
  • max、min:求最大值,求最小值(注意:容器中元素的类型要一致)
  • sum:求和(要求容器中元素都得是数值)
  • count:求某个元素出现的次数。
  • sorted:默认将元素从小到大排序(注意:容器中元素的类型要一致)
  • index:从左向右查找元素,找到此元素就停止查找,没找到报错。

IT行业常说的行业黑话(约定成俗的某些东西):CRUD
什么是CRUD?增删改查

八、元组的删除

元组是不可变数据类型,不能进行元素的CUD操作。但是可以对整个元素进行删除操作。

t = (1, 2)
print(t)
del t
# print(t)    name 't' is not defined
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嚄825

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值