Python的数据类型—元组和集合

元组的创建

t = (1,2,3)  #可以用小括号直接创建
t1 = (1,)    #创建只有一个元素的元组,需要在后面加‘,’
li = [1,2,3]
t2 = tuple(li) #可以将列表强制转化成元组
print(type(t),type(t1),type(t2)) #<class 'tuple'> <class 'tuple'> <class 'tuple'>

元组的特性

元组和列表,一样也支持索引,切片,重复,组合,for循环

t = (1,2,3,[4,5,6])
t1 = (7,8,9)
#索引
print(t[0])    #1
print(t[3][2]) #6
#切片
print(t[:-1])  #(1, 2, 3)
print(t[1:])   #(2, 3, [4, 5, 6])
print(t[::-1]) #([4, 5, 6], 3, 2, 1)
print(t[1:3])  #(2, 3)
#重复
print(t*2)     #(1, 2, 3, [4, 5, 6], 1, 2, 3, [4, 5, 6])
#连接
print(t+t1)    #(1, 2, 3, [4, 5, 6], 7, 8, 9)
#成员符操作
print(1 in t)   #True
print(1 not in t) #False
#for 循环
for i in t:
    print("allow user : %s" %(i)) 

因为元组是不可变数据类型:所以不支持增加,删除,修改

元组的应用场景

x = 1
y = 2
x, y = y, x
# 1. 先把t = (y,x)封装为一个元组, 开辟了一个新的内存空间;
# 2. x = t[0] = 2
# 3. y = t[1] = 1
print(x,y)  #2 1
print("hello %s, hello %s" %("python", "c"))
t = ("python", "c")
print("hello %s, hello %s" %(t[0], t[1]))
print("hello %s, hello %s" %t)
#以上三种输出结果是一样的

元组的赋值

t = ('fentiao', 5, 18)
name, age, weight = t
print(name, weight,age ) #fentiao 18 5

对列表进行排序,并去掉最大值和最小值,然后求平均值

scores = [100, 89, 90, 89, 67, 109]
scores.sort()
min_score, *middle, max_score = scores
print(*middle)  #89 89 90 100
print(type(middle)) #<class 'list'>
print("最终成绩为%s" %(sum(middle)/4))  #最终成绩为92.0

集合

集合的创建

set = {1,2,3}
s = set() #空集合的创建

集合是无序,并ie元素不会重复,所以可以利用集合对列表进行去重

s = [1,2,3,1,2,3]
print(list(set(s))) #[1, 2, 3] 先将列表转化为集合,再将集合转化为列表

因为集合是无序的,所以集合不支持:索引,切片,重复,连接
并且添加元素的顺序和存储的顺序无关
支持 :for循环和成员操作符

s = {1,2,3,4}
for i in s:
    print(i,end=',') #1,2,3,4,

集合的增删改查

s = {1,2,3,4,'a','b'}
#集合的增加
#增加单个元素
s.add('f')
print(s) #{1, 2, 3, 4, 'b', 'f', 'a'}
#增加多个元素
s.update({6,'j'})
print(s) #{1, 2, 3, 4, 'b', 6, 'j', 'f', 'a'}
#删除指定元素
s.remove('a')
print(s)#{1, 2, 3, 4, 'b', 6, 'j', 'f'}
#随机删除集合的元素
s.pop()
print(s)#{2, 3, 4, 'b', 6, 'j', 'f'}
#清空集合
s.clear()
print(s)#set()

集合的操作,交集,差集,并集和对等差分

s1 = {1, 2, 3}
s2 = {1, 2, 4}
# 交集
print(s1.intersection(s2))
print(s1 & s2)
# 并集
print(s1.union(s2))
print(s1 | s2)
# 差集
print(s1.difference(s2))
print(s2.difference(s1))
print(s1 - s2)
print(s2 - s1)
# 对等差分
print(s1.symmetric_difference(s2))
print(s1^s2)
s3 = {1,2}
s4 = {1,2,3}
# s3是s4的子集?
print(s3.issubset(s4))  #True
# s3是s4的父集?
print(s3.issuperset(s4)) #False
# s3和s4没有交集么? 如果没有交集True,否则返回False;
print(s3.isdisjoint(s4))  #False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值