元组的创建
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