元组 tuple:使用一对小括号,括号里面的值称为元素,元素之间使用逗号分隔
例如 tup = (1, 2, 3) 1 2 3 是元素
tup1 = (1)
print(type(tup1)) # <class 'int'>
tup1 = ('1')
print(type(tup1)) # <class 'str'>
tup1 = (1,)
print(type(tup1)) # <class 'tuple'>
当定义一个元素时,小括号无作用,后面加逗号才是元组类型
元组中元素的类型没有限制,可以是任意元素
元组需要注意以下几点:
1.元组属于不可变的数据类型(元组的元素改变后,内存地址也会改变)
2.元组元素的数据类型不限制,可以是任意类型
3.元组只有一个元素时,在元素的后面必须有一个逗号
4.当元组的元素属于可变类型时(列表、字典、集合),修改可变类型的元素时,内存地址不变
还可以使用 tuple 内置函数创建元组
格式:tupe(可迭代对象)
当迭代对象为字符串时,将每个字符当成一个元素
t1 = tuple('Hello')
print(type(t1), t1) # <class 'tuple'> ('H', 'e', 'l', 'l', 'o')
当迭代对象为元组、列表、集合时
集合元素自动去重,且无序
t2 = tuple(['a', 'b', 'c'])
print(type(t2), t2) # <class 'tuple'> ('a', 'b', 'c')t3 = tuple({'a', 'a', 'b', 'b'}) # 集合去重无序
print(type(t3), t3) # <class 'tuple'> ('a', 'b')
当迭代对象为字典时,返回的是字典中键值对中的键 key
t4 = tuple({'name': 'zhangsan', 'age': 18})
print(type(t4), t4) # <class 'tuple'> ('name', 'age')
元组中每个元素也有 2 个索引值
从左到右是从下标 0 开始递增
从右到左是从下标 -1 开始递减
例如:tup1 = (1, 3.14, 'Hello', (1, 2, 3), ['a', 'b'], {'a', 'b'}, {'name': 'zhangsan', 'age': 18})
0 1 2 3 4 5 6
-7 -6 -5 -4 -3 -2 -1
通过 元组[索引值] 获取元组中的元素,当索引值超出后程序报错
元组的切片:截取元组中指定索引的元素
格式:元组[开始索引值: 结束索引值: 步长]
步长默认 1,开始索引默认从左到右从 0 开始,截取的范围左闭右开(左边包含,右边不包含)
tup1 = (1, 3.14, 'Hello', (1, 2, 3), ['a', 'b'], {'a', 'b'}, {'name': 'zhangsan', 'age': 18})
print(tup1[6]) # {'name': 'zhangsan', 'age': 18}
print(tup1[0:4:2]) # (1, 'Hello')
print(tup1[::-1]) # ({'name': 'zhangsan', 'age': 18}, {'b', 'a'}, ['a', 'b'], (1, 2, 3), 'Hello', 3.14, 1)
index 搜索指定元素出现的索引值,如果元素不存在则报错
格式:元组.index('指定元素', 开始索引值, 结束索引值)
# 下标:012345678
t5 = tuple('123123123')
print(t5) # ('1', '2', '3', '1', '2', '3', '1', '2', '3')
# 元组.index('指定元素', 开始索引值, 结束索引值)
print(t5.index('2', 3)) # 4 从下标3开始找第一个2出现的位置
count 统计元组中元素出现的次数,如果元素不存在则返回 0
格式:元组.count('元素')
# 下标:012345678
t5 = tuple('123123123')
print(t5) # ('1', '2', '3', '1', '2', '3', '1', '2', '3')
# 元组.count('元素')
print(t5.count('3')) # 3 找字符串3出现多少次
print(t5.count('4')) # 0 字符串4未找到返回0
内置函数:len 返回元组中元素的个数,max、min 必须是同类型的,del 从内存中删除对象