day07元组和集合

元组、集合

元组的性质:

  • 容器符号:();数据类型:tuple
  • 有序的容器数据类型(下标)
  • 不可变数据类型(没有增删改)
  • 可以存储任意数据类型。

元组的拼接、重复、比较大小、成员运算和列表一样

t1 = tuple()
t2 = (1, 2, 3, (1, 2))
# 拼接
print(t1 + t2)
# 重复
print(t2 * 2)

元组的循环遍历与字符串一模一样:直接遍历、间接遍历

# 直接遍历
for i in t2:
    print(i)

# 间接遍历
for i in range(len(t2)):
    print(t2[i])

元组的打包和解包操作:

打包:Python中一个变量允许同时被赋予多个值,实际上这多个值会被放在一个元组中赋给变量
a = 10, 20, 30, 40
print(a)  # (10, 20, 30, 40)
解包操作:可以将一个容器中的数据拆分给多个变量
  • 变量的数量和容器中数据的个数相同
  • 变量数量少于容器中元素的个数:引入一个不定长参数
  • 一次解包操作只能有一个不定长参数
  • 变量数量比容器中数量要多:不定长参数
# a.变量的数量和容器中数据的个数相同
x1, x2, x3, x4 = a
print(x1, x2, x3, x4)  # 10 20 30 40

# b.变量数量少于容器中元素的个数:引入一个不定长参数
# 注意:一次解包操作只能有一个不定长参数
x, *y = a
print(x, y)  # 10 [20, 30, 40]
x, *y, z = a
print(x, y, z)  # 10 [20, 30] 40

# c.变量数量比容器中数量要多:不定长参数
m, n, *x = (10, 20)
print(m, n, x)  # 10 20 []
# *m, n, *x, y = (10, 20)
# print(m, n, x, y)

创建元组

# a.创建一个空元组
t1 = ()
t2 = tuple()
print(t1 == t2)  # True

# b.创建一元组:一元组需要加个逗号
t3 = (3)
t4 = (3,)
print(t3, t4, type(t3), type(t4))  # 3 (3,) <class 'int'> <class 'tuple'>

# c.创建多元组
t5 = (1, 2)
print(t5)

Python中交换多个变量

a = 20
b = 30
c = 40
a, b = b, a
a, b, c = b, a, c
print(a, b, c)  # 20 30 40

sum、max、min、count、index、sorted和列表一样,注意元组是不可变数据类型不能直接修改原元组,因此没有sort方法

t33 = (2, 4, 6, 7, 9, 'a', 'y')
t34 = (2, 14, 6, 7, 9)
print(sorted(t34, reverse=True))

集合

性质:

  • 容器符号:{};容器类型:set
  • 这是无序的数据类型(没有下标)
  • 可变的数据类型(只有增删、没有改)
  • 集合中只能存在不可变数据类型(数字、字符串、元组等不可变数据类型,不可以放列表、集合、字典)

创建集合

# a.创建空集合
s1 = set()
print(s1, type(s1))  # set() <class 'set'>

# b.
s2 = {10, 10.5, True, False, None, 'abcd', (1, 2, 3)}
print(s2)

集合的运算:交、并、差、对称差

a = {1, 3, 5, 7, 9}
b = {1, 2, 3, 4, 5}

# 交集:&
print(a & b)
# 并集:|
print(a | b)
# 差集:-
print(a - b)
print(b - a)
# 对称差:^
print(a ^ b)

集合:由一个或多个元素组成的确定的集合。数学中集合的性质:确定性、互异性、无序性:

  • 确定性:一个元素只有在和不在两种可能
  • 互异性:一个集合中不可能出现重复元素
  • 无序性:集合中元素没有固定位置。

列表去重、遍历集合、成员运算

list1 = [1, 2, 3, 2, 1, 2, 1]
list2 = list(set(list1))
print(list2)
s3 = {1, 2, 3, 4, 3, 2, 1}
print(s3)

# 将字符串转成集合
print(set('hello'))


# 六、对集合遍历:只能直接遍历
s3 = {1, 2, 3, 4, 3, 2, 1}
for i in s3:
    print(i)

# 七、成员运算
print(3 in s3)

集合的增删

增:add、update:
  • add:一次只能向集合中添加一个元素
  • update:可以一次添加多个元素,向里面传入一个可迭代对象,会将可迭代对象中的元素拆分开再添加进去
s1 = set()
s1.add(1)
s1.add('abc')  # {1, 'abc'}
print(s1)
s1.update('hello')
print(s1)
删除:
  • discard:删除某个指定的元素,重复删除不报错
  • remove:删除某个指定的元素,重复删除会报错
  • pop:删除的是集合中第一个元素,会返回删除的元素(不常用)
  • clear:清空集合
s1.discard(1)
s1.discard(1)  # 重复删除不会报错
s1.remove('abc')
# s1.remove('abc')  # 重复删除会报错
print(s1.pop())
s1.clear()
print(s1)

不常用)

  • clear:清空集合
s1.discard(1)
s1.discard(1)  # 重复删除不会报错
s1.remove('abc')
# s1.remove('abc')  # 重复删除会报错
print(s1.pop())
s1.clear()
print(s1)

集合推导式与列表推导式语法一样,只需要将列表的[]改成{}即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值