一.record
1.一个列表保存多个数据。容器类型。
特点:
1.有序的(下表体现)
2.可变的(增删改)
3.[元素,元素]--->元素可以是任意类型的数据
2.声明列表(赋一个列表值)
3.元素的增删改查
4.遍历列表
5.列表在内存中的存储(存地址)
6.列表的相关方法
7.元祖(不可变的列表)
元祖适用:查找,切片,遍历,in/not in + *
保存不希望被改变的时候用元祖。
二.字典(dict)
1.字典是容器类型(序列),以键值对作为元素(字典里面存的数据全是以键值对的形式出现)
2.键值对: 键:值(key:value) {key1:value, key2:value2, key3:value3}
3.键(key):要唯一,不可变的(数字,布尔,字符串,元祖)
4.值(value):可以不唯一,可以是任何类型数据
1.声明字典:
dict1 = {10:97, 'b':97, true:'布尔', (10, 10):'start'}
print(dict1)
注意:通过字典[key]获取value的时候,如果key不存在,会发生keyerror异常
2.查(获取值)
a.字典[key]--通过key来获取值。
print(person2['name'],person2['age'])
dict = {} #空字典
print(type(dict))
b.字典.get(key)
print(person2.get('name'))
注意:如果key不存在不会报错,返回None
总结:确定key值肯定存在的时候用[]语法获取value。不存在的时候,不希望报错,而是自己对他进行特殊处理的时候用get
练习:想要获取性别,如果没有就默认为男
if person.get('sex'):
print(person2['sex'])
else:
print('男')
c.遍历字典
dog = {'name':'旺财', 'color':'yellow'}
for x in dog:
print(dog['name'])
print(dog.get('name'))
3.改(修改key对应的value)
字典[key] = 新值
dog['name'] ='冉钊'
print(dog)
4.增(添加键值对)
字典[key] = 值-->(key本来不存在就是增加,存在就是修改)
dog['sex'] = '男'
print(dog)
5.删(删除键值对)
a.del 字典[key]
del dog['name']
print(dog)
b.字典.pop(key)
color = dog.pop('color')
print(color)
print(dog)
注意:字典是可变的(增删改)-->可变指的是字典中的键值对的值和个数可变
3.字典相关的运算
1.字典不支持'+'和'*'
2.支持 in和 not in
computer = {'brand':'联想', 'color':'black'}
print('color'in computer)
3.len()
print(len(computer))
4.字典.clear()
删除字典中所有的元素(键值对)
computer.clear()
print(computer)
5.字典.copy()
拷贝字典中所有元素,放到一个新的字典中
dict1 = {'a':1, 'b':2}
dict2 = dict1 #将dict中地址给dict2,两个变量指向同一块区域
dict3 = dict1.copy() #将dict1中的内存赋值到一个新的区域中,然后新的地址给dic
dict1['a'] = 100
print(dict2) #{'a': 100, 'b': 2}
print(dict3) #{'a': 1, 'b': 2}
6.dict.fromkeys(序列,默认值=None)
- 将序列中每个值作为key,然后默认值为值,创建一个新的字典
print(dict.fromkeys('abc',0))
print(dict.fromkeys(['name', 'age', 'sex'],[1, 2]))
7.字典.keys()
- 获取字典中所有的key,以列表的形式返回
print(dict1.keys())
for key in dict1.keys:
print(key)
8.字典.values(了解)
- 获取字典中所有的value
print(dict1)
all_value = dict1.values()
print(all_value)
9.字典.items()
print(dict1.items())
不推介这种方式使用
for key,calue in dict1.items():
print(key,all_value)
10.字典.setdefault(key,默认值= None)
- 给字典添加键值对
dict1 ={'name' :'xiaohuang'}
dict1.setdafult('ab', 'abc')
dict1.setdefault('dd')
print(dict1)
11.字典1.update(字典2)
将字典2中的键值对更新到字典1中
跟新方式:如果字典2中的key在字典1中是存在的,就字典2中的值去跟新字典1中的值
不存在就直接添加字典一中的值
dict1 = {'aa':1, 'bb':'abc', 'cc':True}
dict1.update({'aa':99, 'dd':'你好'})
print(dict1)
4.学生管理系统
1.一个系统可以存储多个学生 (系统应该是一个容器:考虑列表字典元祖)
2.一个学生可以存储:姓名,电话,籍贯,专业,学号,性别...
3.添加学生
4.删除学生
5.修改学生的信息...
- 什么时候用列表?
保存多个数据的类型是同一个类型的时候用列表
比如:声明一个变量来保存数学成绩或者声明一个变量来保存所有学生信息 - 什么时候用字典?
- 什么时候用哪个字典?
保存多个数据的类型不同,就用字典
比如:声明一个变量保存一个学生的信息
a.列表中有字典:
student_system = [
{'name':'stu1', 'age':18, 'tel':110},
{'name':'stu2', 'age':18, 'tel':111},
{'name':'stu3', 'age':18, 'tel':112}
]
rint(student_system[0]['name']) #取出第一个学生的名字
b.字典中有列表
py_class={
'class_name':'python1806',
'students':[
{'name': 'student1', 'age': 20, 'id':'001'},
{'name': 'student2', 'age': 20, 'id':'002'},
{'name': 'student3', 'age': 20, 'id':'003'}
]
}
print(py_class['students'][2]['name'])
练习:在python1806中添加一个学生
name = input('请输入name')
age = input('请输入age')
id = input('请输入id')
stu = {'name':name, 'age':age, 'id':id}
py_class['students'],append(student)
print(py_student)
练习:输入一个学生的姓名,根据性命去删除对应的学生
del_name = input('请输入要删除的学生的姓名')
all_student = py_class['students']
for students_dict in all_students[:]:
if student_dict['name'] == del_name:
all_student.remove(student_dict)
print(py_class)
5.集合(set)
集合是python中一种容器类型;无序的,可变的,值唯一
1.声明一个集合
set1 = {1, 'abc', 100, 100}
print(set1, type(set1))
set2 = set('abs hdjssa')
print(set2)
将其他的序列转换成集合,自带一个去重的功能
set = {1, 2, 3, 'a'}
print(set)
2.查(获取集合中元素)
集合是不能单独获取其中的某一个元素的
可以遍历 (只能是for循环)
for item in set:
print(item, end = ' ')
3.增(添加元素)
a.集合.add(元素)
set.add('good')
print(set)
b.集合1.update(集合2):将集合2中的元素添加到集合1中
set.update({1,2,3,10})
print(set)
4.删(只有remove这种方法)
集合.remove('abc')
set.remove(10)
print(set)
5.改不了
6.数学相关的集合运算
a.判断包含情况:
集合1>=集合2:判断集合1中是否包含集合2
集合1<=集合2:判断集合2中是否包含集合1
print({1, 2, 3, 4, 5} >= {1, 2, 3})
b.求并集|
set1 = {1, 2, 3}
set2 = {2, 4, 5}
print(set1 | set2)
c.求交集:&
求两个集合的公共部分
print(set1 & set2)
d.求差集:-
print(set1-set2)
e.求交集的补集
print(set1 ^ set2)
网友评论