元组的数据结构跟列表相似 1:有序的(下标) --正序、反序,默认从0开始 2:标识符:()里面的元素用英文逗号隔开 3:关键字:tuple 元组与列表的区别? 元组不可变:指的是程序中的不可变,没有关键字可以去操作它,不支持增删改的操作
为什么要有元组的存在?
1. 数据安全性:元组中的数据是不可变的,这意味着一旦创建了一个元组,它的元素就无法被修改,删除或者添加。这种不可变性可以确保数据在整个程序执行过程中保持不变,从而提供了更高的安全性。 2. 用作字典的键:由于元组是不可变的,可以安全地用作字典的键。这是因为字典中的键必须是不可变的对象,而列表等可变对象则不能用作字典的键。 3.函数返回多个值:元组可以用来从函数中返回多个值。例如,一个函数可以返回一个元组,其中包含多个计算结果。在这种情况下,元组提供了一种方便的方式来将多个值打包在一起。 4. 元组是可哈希的:元组中的不可变性使得元组是可哈希的,这意味着元组可以用作集合的元素,也可以用作字典的键。
● 元组里只有一个元素时,切忌用英文逗号隔开
● 不同元组可以用 “+”进行拼接
● 元素为数字时,元组*2相当于是做乘法运算
● 元组只能进行查询,与列表一样,使用索引进行查询
tp = () # 定义一个空的元组
print("tp:", tp)
num1 = (1) # 它是int型
num2 = (1,) # 它是元组
print(type(num1))
print(type(num2))
print("=" * 100)
t1 = (1, 2, 3, 4, 5, 6)
t2 = (100, 3.14)
res = t1 + t2
print("元组拼接:",res)
res1 = t2 * 2
print("元组相乘:",res1)
tp1 = (1, 2, 3, 4, 5, 6)
print("tp1:", tp1)
print(tp1[-1]) # 元组的下标查询/切片
print("=" * 100)
元组是不可操作的数据类型,那么如果对一个元组进行操呢?
可以将元组转换为列表,进行操作后,再转回元组
来回转换后的元组,是一个新的元组,即便变量名相同
tp1 = (1,2,3,4,5,6)
print("初始的tp1地址:",id(tp1))
ls = list(tp1) #新的变量接受,强转为列表
print("ls:",ls)
print(type(ls))
ls.append("hello python")
print("增加元素后的列表:",ls)
print("来回转换后的tp1地址:",id(tp1))
由不同的元素组成的一个数据结构;集合是无序排列的,集合内的元素不可重复,集合之间可以做运算 标识符:{} 关键字:set
set = {2024,"holle python","小白"}
print(set)
set1 = {2024,"holle python","小白",2024,"holle python","小白"}
print(set1)
操作:支持增删改 查询:需要进行转换删除:
pop():随机删除一个元素 remove():括号内可以指定要删除的元素
set1 = {2024,"holle python","小白","abc"} #2024为int型,每次输出都是2024
# set1 = {"2024","holle python","小白","abc"} #如果给2024加上双引号,每次输出就是随机的元素
list1 = list(set1) #先转换为列表
print(list1[0]) #查询第一个元素
#添加元素
set1.add("好好学习") #多次执行后,新增的元素位置也是随机的
print("添加元素后的集合:",set1)
print("=" * 100)
# 删除元素:pop(),remove()
set1.pop() #多次运行,每次随机删除一个元素
print("随机删除后:",set1)
# set1.remove("小白")
# print("指定删除后:",set1)
集合的运算:集合用来做多组数据的逻辑运算 交集、并集、差集、交叉补集 ●交集:两个集合中的相同数据●并集:合并、去重的元素去除掉●差集:把自己有的,对应没有的元素获取到●交叉补集:公有的部分全部移除,只留下独有的部分
#交集:两个集合中的相同数据
set1 = {"小明","小红"}
set2 = {"小明","小蓝"}
print("取交集:",set1.intersection(set2))
#并集:合并、去重的元素去除掉
print("并集:",set1.union(set2))
# 差集:把自己有的,对应没有的元素获取到
set3 = {"小明","高","富","帅"}
set4 = {"小红","高","白"}
print("差集:",set3.difference(set4))
print("差集:",set4.difference(set3))
# 交叉补集:公有的部分全部移除,只留下独有的部分
print("交叉补集:",set3.symmetric_difference(set4))