[Python学习日记-16] 细讲数据类型——元组
简介
元组的创建和查看
元组的切片
元组的循环
元组的嵌套
简介
有些时候我们的列表数据不想被人修改时怎么办?就可以用元组存放。元组(tuple)其实是列表的兄弟类型,他们非常的相似,但元组是不能修改的,这意味着不能向元组中添加、删除或修改元素,所以我们也把它称之为只读列表。
定义:与列表类似,只不过 [] 改成 ()
特性:
- 可存放多个值
- 不可变
- Python 中的元组是一种有序的,按照从左到右的顺序定义元组元素,下标从0开始顺序访问
元组的创建和查看
一、创建
name = (1,2,3,4)
name = ("str1","str2","str3","str4")
name = ("str1",2,3,"str4")
name = ("str1","str2",[1,2,3,4],"str3","str4")
二、查看
1、索引查看
name = ("str1","str2","str3","str4")
name[0]
name[3]
name[-1]
2、使用列表的方法查询
name.index("str2") # 返回从左开始匹配到的第一个 str2 的索引
name.count("str2") # 返回元组中 str2 的个数
注意:index() 如果查找的元素不存在于元组当中,会报错说元组中不存在该元素;而 count() 没有找到将不会报错,而是显示0
3、获取元组的长度
print(len(name))
4、直接查在不在元组
"str1" in name
"str5" in name
"str4" not in name
5、把元组全取出来
print(name[:])
元组的切片
元组的切片和列表一样
name[start:end]
1、正着切
name = ("str1","str2","str3","str4","str5")
print(name[1:4]) # 不包含序号为4的元素
print(name[1:-2])
print(name[1:]) # 把最后的都取出来
print(name[:4]) # 左边不写代表从0开始
2、倒着切
name = ("str1","str2","str3","str4","str5")
print(name[-5:-1])
print(name[-5:]) # 与列表相同,只需要不输入结尾的序号就可以直接取出后5位了
3、步长
元组的步长与列表也是一样的,默认的步长是1,所以切片的时候是一个个切的,我们通过步长的设置可以实现两个两个切、三个三个切...这样跳着切
name[start:end:step] # step 默认值是1
print(name[0:-1:1]) # 设置步长为1
print(name[0:-1:2]) # 设置步长为2,这样会跳一个打印一个
print(name[0:-1:3]) # 设置步长为3
print(name[::3]) # 整个列表加步长3
print(name[::-1]) # 元组都倒序
print(names[-1:-5:-1]) # 在倒序的基础上就可以从右往左切
元组的循环
for i in name:
print(i)
元组的嵌套
前面说到,元组本身是不能修改的,如果元组中包含其他可变的元素呢?例如列表之类的。这些可变元素是可以改变的
name = ("str1","str2",[1,2,3,4],"str3","str4","str5")
name[2][0] = 11
print(name)
为什么元组内的列表是可变的呢?按照理解不应该都是不可变的吗?这是因为元组只是存每个元素的内存地址,上面 [11,2,3,4] 这个列表本身的内存地址存在元组里确实不可改变,但是整个列表包含的元素的内存地址是存在另外一块空间里的,而这个空间是一个列表是可变的。
总的来说,元组本身不可修改,如果包含可修改的数据类型, 那被包含的数据类型可以修改。