day8-课后总结

字典和集合

1.元祖

a.
使用()将多个元素括起来,多个元素之间用逗号隔开
不可变 --->不能增删改
有序 ---->可以通过下标获取元素

tuple1 = (1, 'yue', True, [1, 2], lambda s: s*2)
print(tuple1) #(1, 'yue', True, [1, 2],  at 0x0000019766BA5378>)

如果元祖的元素就只有一个的时候,必须在元素的后面加逗号

tuple2 = (100,)
print(type(tuple2)) # 

b.
如果多个数据直接用逗号隔开,表示的也是一个元祖

tuple2 = 10, 20
print(tuple2, type(tuple2)) #(10, 20)  

c.
元祖的元素不支持增删改
列表获取元素的方式,元祖都支持:元祖[下标]、元祖[:]、元祖[::]

tuple2 = ('星期一', '星期二', '星期三', '星期四')
print(tuple2[1]) # 星期二
print(tuple2[2:]) # ('星期三', '星期四')
print(tuple2[::-1]) #('星期四', '星期三', '星期二', '星期一')

d.获取部分元素
1.可以用过相同的变量个数,来一一获取元祖中的元素

x, y = (10, 20)
print(x, y) # 10 20

2.可以通过在变量前加*来获取部分元素(也适用于列表)

tuple2 = ('小明', 90, 89, 67, 100)
name, *score = tuple2
print(name, score) #小明 [90, 89, 67, 100]

tuple2 = ['boy', 15320001547, 90, 89, 67, 100, '小明']
sex, tel, *score, name = tuple2
print(sex, name, score) # boy 小明 [90, 89, 67, 100]

3.可以通过在列表或则元祖前加*,来展开列表中的元素

tuple3 = (1, 2, 3, 4)
print(*tuple3) # 1 2 3 4

e.
元祖的运算
可以通过sorted()方法,对元祖进行排序,产生一个新的列表

tuple3 = 10, 230, 100, 78, 34
new = sorted(tuple3)
print(new, tuple3) # [10, 34, 78, 100, 230] (10, 230, 100, 78, 34)

2.字典

1.查
保存多个数据代表不同类的数据(需要区分)用字典
可变 ----> 可以进行增删改
无序 ----> 不能通过下标获取值(不能切片)
键(key):要求只能是不可变的数据类型(数字,字符串,元祖...)
a.相同的key时,保留最后一个
值(value):存储的数据。可以是任何类型的数据
a. 字典[key] -->获取key对应的值
key值必须存在,否则会报错KeyError

student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
print(student['name']) # 小明
print(student['sex']) # boy

b.字典.get(key) --->通过key获取值
注意:key值不存在的时候不会报错,结果为None

student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
print(student.get('age'), student.get('study_id')) #30 py001
print(student.get('score'))    # None

确定key一定存在就使用[]语法,key可能不存在的时候用get语法
c.遍历字典
通过for-in遍历字典拿到的是key值

student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
for x in student:
    print(x, student[x])
结果

2.增
字典[key] = 值 (key不存在)

car = {}
car['color'] = 'yellow'
car['prince'] = '300000'
print(car) # {'color': 'yellow', 'price': 300000}

3.修改(修改值)

car['color'] = 'red'
print(car) # {'color': 'red', 'price': 300000}

4.删(删除键值对)
a.del 字典[key] --->通过key删除键值对

student = {'name': '小明', 'age': 30, 'study_id': 'py001', 'sex': 'boy'}
del student['age'], student['sex']
print(student) # {'name': '小明', 'study_id': 'py001'}

b.字典.pop(key) --->取出key对应的值(实质还是删除key对应的键值对

name = student.pop('name')
print(student, name) # {'study_id': 'py001'} 小明

5.字典的相关运算
== 、is、 in 和 not In
a.
len() --> 获取键值对的个数

dict1 = {'abc': 1, 'a': 200}
print(len(dict1)) # 2

b.
字典.clear() -- > 清空字典

dict1.clear()
print(dict1) # {}

c.
字典.copy()-->将字典中的键值对复制一份产生一个新的字典

dict1 = {'abc': 1, 'a': 200}
dict2 = dict1.copy()
print(dict2) # {'abc': 1, 'a': 200}

d.
dict.fromkeys(序列,值) -- >创建一个字典,将序列中的每个元素作为key,值作为value

dict3 = dict.fromkeys('xyz', 100)
print(dict3) # {'x': 100, 'y': 100, 'z': 100}
dict3 = dict.fromkeys(['aa', 'bb', 'cc'], (1, 2))
print(dict3) # {'aa': (1, 2), 'bb': (1, 2), 'cc': (1, 2)}

e.
字典.get(key) ---> key不存在取None
字典.get(key,默认值) ---> key不存在取默认值

student = {}
print(student.get('age')) # None
print(student.get('age', 18)) # 18

f.
字典.values() --->返回所有值对应的序列
字典.keys() ---->返回所有键对应的序列
字典.items() -->将键值对转换成元祖,作为一个序列的元素

dict1 = {'abc': 1, 'a': 200}
items = list(dict1.items())
print(items) # [('abc', 1), ('a', 200)]
print(dict1.items()) # dict_items([('abc', 1), ('a', 200)])

g.
字典.setdefault(key) --->添加键值对,键是key,值是None
字典.setdefault(key, 值)--->添加键值对,键是key,值是value
注意:key存在的时候,对字典不会有任何操作(不会修改key对应的值)

dict1 = {'abc': 1, 'a': 200}
dict1.setdefault('a', 500)
print(dict1) # {'abc': 1, 'a': 200}
dict1.setdefault('ab', 500)
print(dict1) # {'abc': 1, 'a': 200, 'ab': 500}

h.
字典1.update(字典2)-->使用字典2中键值对去更新字典1.(已经存在的key就更新,不存在就添加)

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 200, 'c': 100}
dict1.update(dict2)
print(dict1) # {'a': 1, 'b': 200, 'c': 100}

3.集合

set2 = {} # 这个是空的字典
集合不能改
可变 ---> 增删改
无序 ---> 不能通过下标去获取元素
唯一 --- > 自带去重的功能
{元素1, 元素2, ....}
元素:只能是不可变的数据

set1 = {10, 20, 'abc', (10, 200), 10}
print(set1)  #  (10, 200), 10, 20, 'abc'}

a.查
集合不能单独获取一个元素,也不能切片,只能通过for-in来遍历

for x in set1:
    print(x)
结果

b.增
集合.add(元素) ---> 在集合中添加一个元素

set1 = {1, 2, 3}
set1.add(4)
print(set1) # {1, 2, 3, 4}

集合1.update(序列) --> 将序列中的元素添加到集合1中

set1.update({'a', 'b'})
print(set1)  # {1, 2, 3, 4, 'a', 'b'}

set1.update('0987')
print(set1) # {1, 2, 3, 4, 'a', '0', '8', '7', '9', 'b'}

set1.update(['abc', 'aa'])
print(set1)  # {1, 2, 3, 4, 'a', '0', '8', '7', 'abc', '9', 'b', 'aa'}

set1.update({'name': 1, 'age': 18})  # 字典只添加key
print(set1) # {1, 2, 3, 4, 'a', '0', '8', 'name', '7', 'age', 'abc', '9', 'b', 'aa'}

c.删
集合.remove(元素) ---> 删除指定的元素

set1.remove('aa')
print(set1) # {1, 2, 3, 4, 'a', '0', '8', 'name', '7', 'age', 'abc', '9', 'b'}

2.集合的相关运算
a.包含
集合1 >= 集合2 --->判断集合1中是否包含集合2
集合1 <= 集合2 --->判断集合2中是否包含集合1

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 2}
print(set1 >= set2) # True

b.交集 - >&

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 10, 20}
print(set1 & set2) # {1, 2, 3}

c.并集
| ---> 求两个集合的和

print(set1 | set2) # {1, 2, 3, 4, 5, 10, 20}

d.求差集
集合1 - 集合2 ---> 求集合1中除了集合2以外的部分

print(set1 - set2) # {4, 5}

e.补集
^ --->求两个集合除了公共部分以外的部分

print(set1 ^ set2) # {20, 4, 5, 10}

3.数据类型的转换

1.整型
int()
浮点数、布尔、部分字符串可以转换成整型
部分字符串:只有去掉引号后本身就是一个整数的字符串才能转换成整型
2.浮点数
float()
整数,布尔,部分字符串可以转换成浮点数
部分字符串:去掉字符串的引号,本身就是一个数字的字符串才能转换成浮点数
3.布尔
bool()
所有的数据都可以转换成布尔值
为空为0的值 转换成False,其他的数据都转换成True.

print(bool(''))
print(bool([]))
print(bool(0))
print(bool(None))
# False

4.字符串
str()
所有的数据都可以转换成字符串
数据转换成字符串,就是在数据的最外面加引号
5.列表
list()
序列才能转换成列表
将序列中的元素作为列表的元素
字典转换成列表,将字典的key作为列表的元素

print(list('student')) # ['s', 't', 'u', 'd', 'e', 'n', 't']
print(list((23, 45, 'ac'))) # [23, 45, 'ac']

6.元祖(和列表一样)
只能将序列转换成元祖
tuple()
7.字典
dict()
序列的每个元素有两个元素的数据才能转换成字

list1 = [(1, 3), (2, 4)]
print(dict(list1)) # {1: 3, 2: 4}

8.集合
set()
序列可以转换成集合,有去重的功能

print(set([1, 1, 90, 3, 10, 10])) # {10, 1, 90, 3}

你可能感兴趣的:(day8-课后总结)