持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
元组
- 什么是元组?在其他语言中我咋没听过这个词?这到底是个啥?当我第一次接触到元组时,脑海里就充满了疑问号。
元组可以包含任意类型的对象。
元组是有序的,可以索引和分片。
元组的大小不能改变,不能添加和删除,也不能修改值。
元组是对象的引用,而不是对象本身
- 首先你可以将元组简单的理解成列表,它和列表的不同之处在于元组是不可变的,列表是可以改变的。还要就是元组可以作为字典中的key , 而列表则不可以。
- 其次他是通过
()常见空元组 - 既然说元组和列表很类似了?或者说列表就是元组的特殊的一种表达,那么列表该如何转换成元组呢?
list1=[1,2,3,4,5]
print(tuple(list1))
- 我们也可以通过公式生成元组
tup_tom=tuple(x**2 for x in range(5))
之前还提到元组和列表类似那么自然支持索引定位了,tup_tom[0] 就会输出第一个元素。
切片
a = [1, 3, 5, 7, 9]
b= (2, 4, 6, 8, 10)
print (a[1:3],b[0:4:2])
- 第一个列表的切片我们很容易理解,后面关于元组的切片
0:4:2这是什么意思呢?我们先看看输出结果在回头分析
[3,5] (2,6)
- 结果表明后面你的2表示步长, 也就是说截取
[0,4)的内容,从0开始隔两个获取
解压缩
元组和记录
元组其实是对数据的记录:元组中的每个元素都存放了记录中一个字段的数据,外加这个字段的位置。正是这个位置信息给数据赋予了意义,如果在任何的表达式里我们在元组内对元素排序,这些元素所携带的信息就会丢失,因为这些信息是跟它们的位置有关的。
元组拆包
我们把元组 里的元素分别赋值给变量的过程就叫做元素拆包,例如:
city, year, pop, chg, area = (‘Tokyo’, 2003, 32450, 0.66, 8014)
元组拆包可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致。或者除非我们用 * 来表示忽略多余的元素。例如:a, b, *rest = range(5)。