元组(tuple)
元组是Python的另一种特色的数据类型
元组和列表是相似的
可以存储不同类型的数据
创建元组
用逗号隔开的就是元组,但是为了美观和代码可读性,我们一般加小括号

而且元组包含了可变类型(因为列表是可变的数据类型:我们能对列表值修改,所以说列表是可变类型)
特殊情况:创建一个元素的元组时必须加逗号

注意:上面的只加了小括号的,创建出来的是int整型
而在加了逗号基础上,是否使用小括号都是ok的,都创建的是元组
创建空元组

元组的基本操作
和列表类似,元组也有很多基本操作:
1.索引
2.切片
3.连接
4.复制
5.对内部元素循环
6.查找元组中是否有某元素
7.删除元组
8.返回元组中最大值和最小值
快速演示一下:



可以同样使用len()来查看元组长度:

之前也说了,元组和列表不同之处就是元组创建后不可修改:
我们尝试修改:

果然报错了
除此之外,在列表可行的
pop()
append()
extend()
remove()
都在元组中不可用,因为这些都是在修改
元组和列表相互转化

没错,只要在原来的列表外套一层tuple()就可以转为元组
在原来的元组外面套一层list()就可以转为列表
还记得列表生成式么?
你以为它很简单就过去了么?
不!
它又回来了!
这次,把元组也加进来一起开party了
还记得讲列表生成式的时候举了个排列组合的例子么?


是不是也可以
如果字符串里有重复的字符,而我们要找不同的字符的排列组合,该怎么操作?
就像四个队伍,要找出所有打球比赛可能情况(有主客场之分)

我们不希望看到上图红框里 ,因为这是和自己队打自己队,不科学
我们可以加个条件判断来筛选我们要的:

这样就ok了,再一次体现出列表生成式的强大
回头想想
如果我们用一般循环,怎么写?

元组解包
我们在创建元组的时候,其实是在进行元组打包

通过观察上图,你可能已经知道了元组解包其实就是:
将等号右侧的元组中的元素按顺序依次赋值给等号左边的变量
当然,如果你少写左边的变量,会发生什么呢??
可能我只想要元组前三个元素

网友评论