chap8 (python全栈开发教程)

2022.11.6

1.什么是元组

# 元组
# 不可变序列、可变序列
'''可变序列:列表、字典(目前学到)'''
lst=[10,20,45]
print(lst,id(lst))
lst.append(300)
print(lst,id(lst))
'''不可变序列:字符串,元组(目前学到)'''
s='hello'
print(s,id(s))
s+='world'
print(s,id(s))

2.元组的创建方式

# 元组的创建方式
'''第一种创建方式,使用()'''
t=('python','world',98)
print(t,type(t))

t2='python','world',98   # 省略了小括号
print(t2,type(t2))

t3=('python',)     # 如果元组中只有一个元素,逗号不能省
print(t3,type(t3))   # ('python',) 

'''第二种创建方式,使用内置函数tuple()'''
t1=tuple(('python','world',98))
print(t1,type(t1))

'''空元组的创建方式'''
lst=[]     # 空列表
lst1=list()

d={}       # 空字典
d2=dict()

# 空元组
t4=()
t5=tuple()

print('空列表',lst,lst1)
print('空字典',d,d2)
print('空元组',t4,t5)


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  # 元组是允许修改元素的 TypeError: 'tuple' object does not support item assignment
'''由于[20,30]列表,而列表是可变序列,所以可以向列表中添加元素,而列表的内存地址不变'''
t[1].append(100)   # 向列表中添加元素
print(t,id(t[1]))

3.元组的遍历

# 元组的遍历
t=('python','world',98)
'''第一种获取元组元素的方式,使用索引'''
print(t[0])
print(t[1])
print(t[2])
# print(t[3])   # 前提是知道有多少个元素 ,否则报错 IndexError: tuple index out of range
'''第二种方式:遍历元祖'''
for item in t:  # 这里t是元组的名字
    print(item)    # item表示元组中每一个元素

4.集合的创建 

# 集合
# 集合的创建方式
'''第一种创建方式:使用{}'''
s={2,3,4,5,5,6,7,7}  # 集合中的元素不允许重复
print(s)   # {2, 3, 4, 5, 6, 7}
'''第二种创建方式:使用内置函数set()'''
s1=set(range(6))   # 将产生的整数序列通过set转成集合
print(s1,type(s1))  # {0, 1, 2, 3, 4, 5} 

s2=set([1, 2, 4, 5, 5, 5, 6, 6])  # 将列表中的元素转成集合类型
print(s2,type(s2))   # {1, 2, 4, 5, 6} 

s3=set((1,2,4,4,5,65))  # 将元组类型的元素转成集合类型的元素
print(s3,type(s3))   # 接种的元素是无序的 {65, 1, 2, 4, 5} 

s4=set('python')      # 将字符串序列转成集合中的元素
print(s4,type(s4))    # {'y', 't', 'o', 'h', 'p', 'n'} 

s5=set({12,4,34,55,66,44,4})  # 将集合中的元素通过set转成集合类型(实际上不转也是集合)
print(s5,type(s5))  #   {34, 66, 4, 55, 12, 44}  --位置改变了,同时去掉了重复元素

'''定义一个空集合'''
s6={}    # dict字典类型
print(type(s6))  # 

s7=set()
print(type(s7))  # 

5.集合的相关操作

# 集合的相关操作
s={10,20,30,405,60}

①集合元素的判断操作

'''1.集合元素的判断操作'''
print(10 in s)  # True
print(100 in s)  # False
print(10 not in s)  # False
print(100 not in s)   # True

 ②集合元素的新增操作

'''2.集合元素的新增操作'''
'①add一次添加一个元素'
s.add(80)
print(s)  # {10, 80, 20, 405, 60, 30}
'②update一次至少添加一个元素'
s.update({200,400,300})
print(s)   # {200, 10, 300, 80, 400, 20, 405, 60, 30}
s.update([100,99,8])
print(s)  # {99, 100, 200, 8, 10, 300, 80, 400, 20, 405, 60, 30}
s.update((78,64,56))
print(s)    # {64, 99, 100, 200, 8, 10, 300, 78, 80, 400, 20, 405, 56, 60, 30}

③集合元素的删除操作

'''3.集合元素的删除操作'''
'①remove()'
s.remove(100)
print(s)  # {64, 99, 200, 8, 10, 300, 78, 80, 400, 20, 405, 56, 60, 30}
# s.remove(500)  # KeyError: 500
'②discard()'
s.discard(500)  # 不抛异常
s.discard(300)  # {64, 99, 200, 8, 10, 78, 80, 400, 20, 405, 56, 60, 30}
print(s)
'③pop()'
s.pop()   # 随意删一个
print(s)  # {99, 200, 8, 10, 78, 80, 400, 20, 405, 56, 60, 30}
s.pop()
print(s)  # {200, 8, 10, 78, 80, 400, 20, 405, 56, 60, 30}
# s.pop(400)  # 不能添加参数
print(s)
'④clear()'
s.clear()   # 清空集合中的元素
print(s)   # set()

④集合间的关系

'''4.集合间的关系'''
# ①两个集合是否相等(元素相同就相等)
'集合中的元素是无序的,底层存储顺序相同'
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))  # s2是s1的子集吗True
print(s3.issubset(s1))  # False
# ③一个集合是否是两一个集合的超集
print(s1.issuperset(s2))  # s1是s2的超集吗True
print(s1.issuperset(s3))  # False
# ④两个集合是否没有交集
print(s2.isdisjoint(s3))  # s2和s3是否没有交集?False 有交集
s4={100,200,300}
print(s2.isdisjoint(s4))  # True 没有交集

⑤集合的数学操作

'''5.集合的数学操作'''
# ①交集
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与|等价,并集操作
print(s1)
print(s2)  # 并集之后的s1集合、s2集合没有发生变化
# ③差集操作
print(s1.difference(s2))
print(s1-s2)
print(s1)
print(s2)  # 差集之后的两个原集合没有发生变化
# ④对称差集
print(s1.symmetric_difference((s2)))
print(s1^s2)   # symmetric_difference和^等价

6.集合生成式

# 集合生成式
'''列表生成式'''
lst=[i*i for i in range(10)]
print(lst)   # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
'''集合生成式'''
s={i*i for i in range(10)}
print(s)   # {0, 1, 64, 4, 36, 9, 16, 49, 81, 25}  无序

你可能感兴趣的:(python)