今日学习内容:
"""
# 1.列表相关方法
# 2.元组(tuple)
"""
序列, (元素1, 元素2, ...)不可变;有序 元组是不可变的列表
"""
t1 = (10,)
t2 = 19, 2, 34, 5
print(t2)
t3 = (10, 89)
print(t3[0], t3[1])
x, y = t3
print(x, y)
t4 = (19, 23, 45, 67, 78, 89)
*x, y = t4
print(y, x)
x, y, *z = t4
# 3.字典
"""
序列,{键1:值1, 键2:值2,...}可变的;
无序的键 - 不可变的数据;
唯一的值 - 任何类型的数据
"""
# 查 - 获取值
# 查单个: 字典[key] / 字典.get(key) / 字典.get(key, 默认值)
"""
for 变量 in 字典: 变量取到的是字典的key
"""
# 4.列表推导式
"""
1)序列元素整体变换[表达式 for 变量 in 序列]
2)按两种不同的方式来变换[表达式1 if 条件语句 else 表达式2 for 变量 in 序列]
3)提取满足条件的元素,然后进行变换[表达式 for 变量 in 序列 if 条件语句]
"""
字典
"""
# 1. 增、改
"""
字典[key] = 值-当key存在的时候就是修改指定key对应的值,当key不存在的时候添加键值对
"""
# 2.删
# 1) del 字典[key] - 删除字典中指定key对应的键值对
# 3.字典相关操作
# 1)字典不支持+、*和比较大小,只支持比较是否相等的运算
# 2)in 和 not in -判断字典中是否存在指定的keyprint('a' in {'name': 'a', 'age': 18})
# Falseprint('name' in {'name': 'a', 'age': 18})
# True
# 3)dict、len
"""
dict(数据) - 将数据转换成字典
a. 数据必须是序列
b. 序列中元素必须是小序列, 而且小序列有且只有两个元素,第一个元素必须是不可变的
"""
# 4.字典推导式
"""
{表达式1:表达式2 for 变量 in 序列}
{表达式1:表达式2 for 变量 in 序列 if 条件语句}
dict(表达式 for x in 序列) - 表达式必须是有且只有两个元素的序列,第一个元素必须是不可变的
"""
#5.字典相关方法
# dict
# 1) 字典.clear() - 清空字典
#2) 字典.copy() - 复制字典产生一个一模一样的新字典
# 3) (了解)dict.fromkeys(序列) - 创建一个字典,将序列中所有的元素作为字典key,值默认都是None
4) values、keys、items
"""
字典.values() - 获取字典中所有的值;返回的不是列表另是一种序列
字典.keys() - 获取字典中所有的键;返回的不是列表另是一种序列
字典.items() - 获取字典中键值对;返回的时候序列,序列中的元素是每个键值对对应的元组
"""
集合
"""
# 1.什么是集合(set)
"""
集合是容器型数据类型;将{}作为容器的标志,多个元素之间用逗号隔开:{元素1, 元素2, 元素3, ...}
集合是可变的;集合是无序的元素:必须是不可变的数据;元素是唯一的
"""
# 空集合: {}不是空集合,是空字典
set1 = set()
print(type(set1), len(set1))
# <class 'set'> 0
# 集合是无序的
print({1, 2, 3} == {3, 1, 2})
# True
# 集合的元素必须是不可变的类型的数据
set2 = {23, 'abc', (2, 3)}
print(set2)
# set3 = {23, 'abc', [2, 3]}
# 报错!
# print(set3)
# 集合的元素是唯一的
set4 = {10, 20, 30, 10, 10}
print(set4)
# {10, 20, 30}
# 集合自带去重功能,但是只能去元素是不可变的序列的重
# 2.增删改查
# 1) 查: 集合只能遍历
# 2) 增
# 集合.add(元素) - 在集合中添加指定元素
# 集合.update(序列) - 将序列中的元素全部添加到集合中
# 3) 删
# 集合.remove(元素) - 删除指定元素,如果元素不存在就报错
# 集合.discard(元素) - 删除指定元素,如果元素不存在不报错
# 3.数学集合运算:交集、并集、差集、对称差集、子集和真子集
s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7, 8, 9}
# 1)交集:&
# 集合1 & 集合2 - 获取两个集合公共的部分
print(s1 & s2)
# {5, 6, 7}
# 2)并集:|print(s1 | s2)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
# 3)差集:
# 集合1 - 集合2 - 获取在集合1中但是不在集合2中的所有的元素print(s1 - s2)
# {1, 2, 3, 4}print(s2 - s1)
# {8, 9}# 4)对称差集: ^# 集合1 ^ 集合2 - 获取只在集合1和只在集合2中的所有的元素print(s1 ^ s2)
# {1, 2, 3, 4, 8, 9}
# 5)子集和真子集
# 集合1 >= 集合2 - 判断集合2是否是集合1的子集
# 集合1 > 集合2 - 判断集合2是否是集合1的真子集
作业练习
#定义三个集合
subject1={'zhangsan' ,'wangwu','lisi','zhaojiu','Tom','Jenny'}
subject2={'lisi','zhaojiu','stu1','stu2',' zhangsan'}
subject3={'stu3','stu6;'zhangsan', zhaojiu',stu7',Tom',xiaoming'}
subject = subject1 | subject2 | subject3
print(subject)
#a.求选课学生总共有多少人
print(选课学生总数,len(subject)
#b.只选了第一门学科的人数和对应的名字
subject_first = subject1-subject2-subject3
print(只选了第一门学科的人数和对应的名字",len(subject_first),subject_first)
#C.只选了一门学科的人数和对应的名字
subject_one=((subject1Asubject2))-subject3)|((subject1&subject3)-subject2)|((subject2&subject3)-subject1)
print("只选了一门学科的人数和对应的名字,len(subject_one),subject_one)
#d.只选了两门学科的人数和对应的名字
subject_two=(subject1&subject2-subject3)|(subject1&subject3-subject2)|(subject2&subject3-subject1)
print(只选了两门学科的人数和对应的名字"len(subject_two),subject_two)
#e.选了三门学科的人数和对应的名字
subject_all= subject1&subject2&subject3 I
print(选了三门学科的人数和对应的名字",len(subject_all,subject_all)