八、python 常用数据结构-元组

"""一、元祖定义:
元祖是有序的不可变对象的集合
元祖使用小括号(),各个对象之间使用逗号,分隔
元祖是异构的,可以包含多种数据类型"""

"""二、元祖的使用:创建"""
# 1、直接使用逗号分隔
tup1 = 1, 2, 3, 4
print(type(tup1), tup1)

# 2、通过小括号填充元素
tup2 = (1, 2, 3, 4)
print(type(tup2), tup2)

# 3、通过构造函数 要为空或者可迭代对象,否则TypeError: 'xx' object is not iterable
tup3 = tuple()
print(type(tup3), tup3)  # 不传默认为()
tup4 = tuple('hello')
print(type(tup4), tup4)  # 不传默认为()
tup5 = tuple([1, 2, 3, 4, 5])
print(type(tup5), tup5)  # 不传默认为()
##异常
tup4 = tuple(1)  # TypeError: 'int' object is not iterable

# 注意:单元素元祖,逗号不可缺少
tup6 = 1,
print(type(tup6), tup6)  # <class 'tuple'> (1,)
tup7 = (2,)
print(type(tup7), tup7)  # <class 'tuple'> (2,)
##不加逗号
tup7 = (2)
print(type(tup7), tup7)  # <class 'int'> 2

"""三、元祖的使用:索引切片与列表一致"""

"""四、元祖的常用方法:"""
# 1、index
# index(item)
# 返回与目标元素相匹配的首个元素的索引
# 目标值必须在元祖中存在,否则会报错
li = 1, 2, 3
print(li.index(3))  # 2
print(li.index(4))  # ValueError: tuple.index(x): x not in tuple

# 2、conut
# index(item)
# 返回某个元素出现的次数
# 返回:次数
li = (1, 2, 3, 3, 3, 3)
print(li.count(3))  # 4
print(li.count(4))  # 如果输入不存在的对象则为0 0

"""五、元祖解包
把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元祖中"""
# 1、传统逐一赋值 繁琐
t = (1, 2, 3)
a = t[0]
b = t[1]
c = t[2]
print(a, b, c)

# 2、使用元祖解包,一气呵成
a, b, c = [1, 2, 3]
print(a, b, c)  # 1 2 3

a, b, c = (1, 2, 3)
print(a, b, c)  # 1 2 3

"""六、元祖与列表的比较"""
"""
1、相同点:
1)都是有序的
2)都是异构的,能包含不同数据类型的对象
3)都支持索引和切片
2、区别:
1)声明方式不同,元祖使用(),列表使用[]
2)列表可变支持增删改,元祖不可变
"""