今天接着昨天列表知识点
一、列表
1.count() 统计该元素在此列表中有几个
l = [1,4,5,6,4,6,7] print(l.count(6)) #2
2.clear() 清空列表 []
l = [1,4,5,6,4,6,7]print(l.clear()) #None 表示没有返回任何值 print(l) #[]
3.reverse() 将列表反转(就是顺序调换输出)
l = [1,4,5,6,4,6,7] l.reverse() print(l) #[7, 6, 4, 6, 5, 4, 1]
4.sort () 排序 默认情况下是从小到大(升序)
l = [1,4,5,6,4,6,7] l.sort() print(l) #[1, 4, 4, 5, 6, 6, 7]
sort和reverse结合就可以变成从大到小排序
l = [1,4,5,6,4,6,7] l.sort(reverse=True) print(l) #[7, 6, 6, 5, 4, 4, 1]
总结:
1.能存多个值
2.有序
3.可变类型
用已学的知识点做队列(先进先出)和堆栈(先进后出)
l1 = [] # 先进 l1.append('first') l1.append('second') l1.append('third') # 先出 print(l1.pop(0)) print(l1.pop(0)) print(l1.pop(0))
# 先进 l1.append('first') l1.append('second') l1.append('third') # 后出 print(l1.pop()) print(l1.pop()) print(l1.pop())
二、元组
作用:能够存储多个元素,之间用逗号隔开,元素可以是任意类型,元组不能被修改
定义:与列表相比,只不过是[]换成()
age = (11,22,33) #age = tuple((11,22,33))
在定义元组的时候,哪怕只有一个元素的时候,也要用逗号隔开,区分一下
t1 = (1,2,3) print(type(t1)) #<class 'tuple'> t2 = (1) print(type(t2)) #<class 'int'>
t = tuple(1) #报错,必须传容器类型就是可以for循环的
需要掌握的操作:
1.按索引取值
t = (1,2,'a','b',[1,2,3])
print(t[0]) # 1
虽然说元组不能改,但是如果要修改里面的可变类型,你要先定位到修改数据的位置
t = (1,2,'a','b',[1,2,3]) t[-1][0] = '我改了' print(t) #(1, 2, 'a', 'b', ['我改了', 2, 3])
2.切片(顾头不顾尾,步长)
print([::2]) #步长为2获取所有元素
3.长度 len
print(len(t))
4.成员运算 in 和not in
print ('a' in t)
5.循环
for i in t:
print(i)
总结:
1.能存多个值
2.有序
3.不可变类型
三、字典 dict
作用:能存储多组key:value键值对,key是对value的描述 key通常都是字符串,这个key只能是不可变类型,value可以是任意类型数据
定义: d ={'name':'jason','age':18} #d = dict({'name':'jason','age':18})
注意:字典的key是不能重复的,要唯一标识一条数据,如果你重复了,后面的就会覆盖前面的
需要掌握的:
1.按key存取值:可存可取
d = {'name':'jason','age':18} #取 print(d['name']) #jason print(d['user']) #如果字典中没有这个key,就会报错 #修改 d['name'] = 'oldboy' print(d) #{'name': 'oldboy', 'age': 18} 如果是设置原字典中已经存在的key,就是修改 #添加 d['pwd'] = '123' print(d) #{'name': 'oldboy', 'age': 18, 'pwd': '123'} 如果原字典中没有这个key,就是添加
2.长度len()
字典是统计键值对的个数
3.成员运算 in 和 not in (对于字典来说只能判断key值)
d = {'name':'jason','age':18} print('name' in d) #True print('pwd' in d) #False
4.删除 pop(根据key来删除,返回的值是value。当删除字典中没有的key时,直接报错)
d = {'name':'jason','age':18,'pwd':123} print(d.pop('name')) #jason print(d) #{'age': 18, 'pwd': 123} print(d.pop('user')) #直接报错
定义字典的三种方法:
1.掌握: d1 = {'name':'oldboy','pwd':123}
2.掌握: d2 = dict(name = 'jason' , password = 123 , age = 18) 注意这里的key设置的时候不用写' '
3.了解即可
d ={} l = [ ['name','jason'], ['age',18], ['hobby','read'] ] for k,v in l: d[k] = v print(d) #{'name': 'jason', 'age': 18, 'hobby': 'read'} #还有一种方法 d3 = dict(l) print(d3) #{'name': 'jason', 'age': 18, 'hobby': 'read'}
5.键keys(),值values(),键值对items()
keys是取出所有key放在一个列表中,values是取出所有value放在一个列表中,items是把每个键值对放在一个元组中,然后所有键值对组成一个列表。
d = {'name':'jason','age':18,'pwd':123} print(d.keys()) #dict_keys(['name', 'age', 'pwd']) print(d.values()) #dict_values(['jason', 18, 123]) print(d.items()) #dict_items([('name', 'jason'), ('age', 18), ('pwd', 123)])
6.get()根据key获取value (这种方法相对于d['name'] 直接取值的方法更好,因为这个在取不存在的key时,不会报错)
注意:不能写d.get('name') = xxx 这种赋值方式,赋值方式只能写d['name'] = xxx
d = {'name':'jason','age':18,'pwd':123} print(d.get('name')) #jason print(d.get('age')) #18 print(d.get('user')) #None print(d.get('aa','不存在的')) #不存在的
第二个参数如果不写的话,当key不存在的话就返回None,写了就返回你写好的第二个参数信息
需要掌握的:
7.快速创建一个字典 fromkeys()
d = {'name':'jason','age':18,'pwd':123} print(d.fromkeys(d,123)) #{'name': 123, 'age': 123, 'pwd': 123} print(d.fromkeys('sad',123)) #{'s': 123, 'a': 123, 'd': 123}
8.popitem() 删除 尾部以元组格式弹出
d = {'name':'jason','age':18,'pwd':123} print(d.popitem()) #('pwd', 123) print(d) #{'name': 'jason', 'age': 18}
9.setdefault()
d1 = {'name':'jason','pwd':123} res1 = d1.setdefault('name','xxoo') # 当键存在的情况下 不修改值 并且将原先key对应值返回给你 print(d1,res1) #jason res2 = d1.setdefault('age',18) # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你 print(d1,res2) #18
10.update() 如果updata字典里面没有的key,就会新加一个键值对。如果update原来存在的key,那么只会修改value
d1 = {'name':'jason','pwd':123} d2 = {"age":18} d1.update(d2) print(d1) #{'name': 'jason', 'pwd': 123, 'age': 18} d1.update(age=666) print(d1) #{'name': 'jason', 'pwd': 123, 'age': 666}
11.循环 字典循环结果是显示出key
d1 ={'name':'jason','age':18}
for i in d1:
print(i)
总结:
1.存在多个值
2.无序
3.可变的
四、集合
作用:去重、关系运算
定义:可以包含多个元素,用逗号分开 s = {1,2,3,4,5} # s = set()
注意在定义空集合的时候只能用关键字 set() , 空{}指的是字典
集合的元素遵循三个原则:
1.每个元素都必须是不可变元素
2.没有重复的元素
3.无序
优先掌握的操作:
1.长度len()
2.成员运算 in 和 not in
3. | 合集 (两个集合合并) 两个班级的所有人
pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'} linux = {'frank', 'jerry', 'tank', 'egon', 'alex'} print(pythons | linux) #{'frank', 'tank', 'alex', 'jason', 'kevin', 'jerry', 'egon', 'owen', 'nick'}
4. & 交集 (两个集合的共同点) 两个班级都报名了
pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'} linux = {'frank', 'jerry', 'tank', 'egon', 'alex'} print(pythons & linux) #{'egon', 'alex', 'tank'}
5. - 差集 只报了一个班的学生
pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'} linux = {'frank', 'jerry', 'tank', 'egon', 'alex'} #只报名pythons班级的学生 print(pythons - linux) #{'jason', 'kevin', 'nick', 'owen'} #只报名linux班级的学生 print(linux - pythons) #{'frank', 'jerry'}
6. == 判断是否相等
s1 = {1,2,3} s2 = {1,3,2} print(s1==s2) #True 因为集合是无序的
7. 父集: >,>= 子集:<,<= (判断是否包含)返回结果是True或者False
s1 = {1,2,3} s2 = {1,3,2,4,5} print(s1<s2) #True
数据类型总结
int
float
str
list
dict
set
tuple
bool
可变类型:list / dcit /set
不可变类型: int /float /str /tuple
按访问顺序区分:
直接访问:数字
顺序访问:字符串,列表,元组
key值访问:字典