python基础 10 -- 元组&集合

元组

元组的定义

元组的数据结构跟列表相似
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))

 

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值