八:
1.
'''可变序列 列表+字典'''
lst = [10,20,45]
print(id(lst))
lst.append(300)
print(id(lst))
'''不可变序列 字符串+元组'''
s = 'hello'
print(id(s))
s = s+'world'
print(id(s))
print(s)
#注:列表用:[],元组用:()
'''元组的创建方式'''
'''第一种创建方式--使用()'''
t = ('Python','world',98)
print(t)
print(type(t))
#注:使用()方式可以省略不写
t2 = 'Python','world',98
print(t2)
print(type(t2))
#t3 = ('Python')
#print(type(t3)) #'str'
'''注:只有一个元素的时候','必须加上,逗号不能省'''
t3 = ('Python',)
print(t3)
print(type(t3)) #turple元组
'''第二种创建方式,使用内置函数tuple()'''
t1 = tuple(('Python','world',98))
print(t1)
print(type(t1))
'''空元组的创建方式'''
'''空列表的创建方式'''
lst = []
lst1 = list()
#空字典
d = {
}
d2 = dict()
#空元组
t4 = ()
t5 = tuple()
print('空列表',lst,lst1)
print('空字典',d,d2)
print('空元组',t4,t5)
3.列表和字典是可变的序列
t = (10,[20,30],9)
print(t)
print(type(t))
print(t[0],type(t[0]),id(t[0]))
print(t[1],type(t[1]),id(t[1]))
print(t[2],type(t[2]),id(t[2]))
'''尝试将t[1]修改为100'''
print(id(100))
#t[1] = 100 #元组是不允许修改元素的(因为不可变序列)
'''由于[20,30]列表,是可变序列,,所以可以向列表中添加元素
而且列表的内存地址不变'''
t[1].append(100) #向列表中添加元素
print(t,id(t[1]))
#不可以修改元组的内容,当时可以修改元组中元素的添加内容(如果元素可变)
'''元组的遍历'''
t = ('Python','world','98')
'''第一种获取元组的方式,使用索引'''
print(t[0])
print(t[1])
print(t[2])
#print(t[3]) #索引超出范围
'''遍历元祖'''
for i in t:
print(i)
5.
#集合的相关操作
#集合元素的判断操作
s = {
10,20,30,405,60}
print(10 in s) #True
print(10 not in s) #False
'''集合元素的新增操作'''
'''注:
add一次只能添加一个元素
update一次至少添加一个元素
'''
s.add(80)
print(s)
'''增加集合元素'''
s.update({
200,400,300})
print(s)
'''增加列表元素'''
s.update([100,98,8])
print(s)
'''增加元组元素'''
s.update((78,64,56))
print(s)
'''集合元素的删除操作'''
#remove
s.remove(100)
print(s)
#s.remove(500) #remove在集合中没有时,会抛出异常
#discard
s.discard(500) #discard在集合中没有时,不会抛出异常
s.discard(300)
print(s)
#pop
s.pop()
print(s)
s.pop()
print(s)
#pop(200)
'''注:pop()是不含参数的,否则会抛出异常
pop()删除的类似与队列,先进先出(删除的是前面的数)
不过,老师讲课的是随机删除
'''
#clear:直接将集合清空
s.clear()
print(s)
'''两个集合是否相等'''
s = {
10,20,30,40}
s2 = {
30,40,20,10}
print(s == s2) #True
print(s != s2) #False
#集合是无序存放的(内容相同即可)
'''一个集合是另一个集合的子集'''
s1 = {
10,20,30,40,50,60}
s2 = {
10,20,30,40}
s3 = {
10,20,90}
print(s2.issubset(s1)) #True
print(s3.issubset(s1)) #False
'''一个集合是否是另一个集合的超集(子集反过来说)'''
print(s1.issuperset(s2)) #True
print(s1.issuperset(s3)) #False
'''两个集合是否含有交集'''
print(s2.isdisjoint(s3)) #False
s4 = {
100,200,300}
print(s2.isdisjoint(s4)) #True
'''集合的数学操作'''
s1 = {
10,20,30,40}
s2 = {
20,30,40,50,60}
print(s1.intersection(s2))
print(s1 & s2)
#intersection()与&等价---交集操作
print(s1)
print(s2)
#交集之后的s1和s2操作没有发生变化
'''并集操作'''
print(s1.union(s2))
print(s1 | s2)
#union与| 等价---并集操作
#并集之后的s1和s2操作没有发生变化
'''差集操作'''
print(s1.difference(s2))
print(s1 - s2)
print(s1)
print(s2)
'''对称差集(就是两个集合减去交集)'''
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
print(s1)
print(s2)
7.
#列表生成式
lst = [i*i for i in range(6)]
print(lst)
#集合生成式(无序的)
s = {
i*i for i in range(10)}
print(s)