今日内容
列表之内置方法(list)
列表在调用内置方法之后不是产生新的值,而是修改它的本身
1.统计列表里的数据个数
l1 = ['jason','lisa','kevin','tony','joker']
print(len(l1)) # 5
2.增
2.1尾部增加一个元素 关键字:.append()
括号内无论放什么数据类型,都会当成一个整体增加
l1 = ['jason','lisa','kevin','tony','joker']
l1.append([1,2,3])
print(l1) # ['jason',lisa,'kevin','tony','joker',[1,2,3]]
2.2任何位置追加一个数据 关键字:.insert()
l1 = ['jason','lisa','kevin','tony','joker']
l1.insert(1,'插队')
print(li) # l1 = ['jason','插队','lisa','kevin','tony','joker']
同上括号内无论放什么数据类型,都会当成一个整体增加
2.3扩展列表
方式一:for 循环
l1 = [1,2,3]
l2 = [11,22,33,44]
for i in l1:
l2.append(i)
print(l2) # [11,22,33,44,1,2,3]
方式二: 使用 + 号
l1 = [1,2,3]
l2 = [11,22,33,44]
print(l2+l1) # [11,22,33,44,1,2,3]
方式三:使用关键字.extend() 括号内必须是支持 for的数据类型
l1 = [1,2,3]
l2 = [11,22,33,44]
l1.extend(l2)
print(l1) # [1,2,3,11,22,33,44]
推荐使用方式三 底层原理就是 for循环加 .append方法
3.查询数据与修改数据
3.1查询功能 通过索引即可
l1 = ['jason','joker','lisa','kevin''tony]
print(l1[0]) # jason
print(l1[0:2]) # ['jason','joker']
3.2修改数据 索引修改想要修改的数据
l1 = ['jason','joker','lisa','kevin','tony']
l1[1] = 'jasonNb'
print(l1) # ['jason','jasonNb','lisa','kevin','tony']
4.删除数据
4.1通用删除策略
关键字:del 索引删除
l1 = ['jason','joker','lisa','kevin''tony]
del l1[1]
print(l1) # ['jason','lisa','kevin','tony']
4.2指名道姓的删
关键字:.remove() 括号内输入明确要删除的数据值
l1 = ['jason','joker','lisa','kevin''tony]
l1.remove('jason')
print(l1) # ['joker','lisa','kevin','tony']
4.3先取出数据值 然后再删 也可以通过索引的方式取出数据值 在删除
关键字:.pop()
l1 = ['jason','joker','lisa','kevin''tony]
res = l1.pop() # 空格默认取出尾部在删
print(res) # res = tony
print(l1) # ['jason','joker','lisa','kevin']
同时也可以通过索引的方式取出数据值 在删除
l1 = ['jason','joker','lisa','kevin''tony]
res = l1.pop(0)
print(res) # jason
print(l1) # ['joker','lisa','kevin''tony']
5.查看数据值对于的索引值
关键字:.index()
l1 = ['jason','joker','lisa','kevin''tony]
l1.index(2)
print(l1) # lisa
6.统计某个数据值出现的次数
关键字.count
l1 = ['jason','jason','jason','tony','lisa']
l1.count('jason')
print(l1.count('jason')) # 3
7.排序
升序 关键字:.sort 默认从小到大
降序 关键字:.sort(reverse = True)
8.翻转
关键字:.reverse 前后跌倒
9.比较运算
l1 = [66,22]
l2 = [11,22,33,44,55,66]
print(l1 > l2) # Ture 是按照位置来比较
10.for循环
按照值的一个整体 # 'joker'
可变与不可变的类型
1.可变的类型:list
值改变(内置方法) 内存地址可以不变
l1 = [11,22,33,44]
print(id(l1)) # 1976844297928
l1.append(55)
print(id(l1)) # 1976844297928
列表内置方法是修改自身 所以是可变类型
2.不可变的类型:str int float
值可变(内置方法) 内存地址肯定变
s1 = '@jason@'
print(id(s1)) # 2089301545960
res = s1.split('@')
print(id(res)) # 2089304205000
字符串的内置方法是产出一个新的数据 不可变类型
元组的内置方法(tuple)
支持 for循环的数据类型都可以转换成元组
t1 = ()
print(type(t1)) # tuple
t2 = (11)
print(type(t2)) # int
t3 = (11.1)
print(type(t3)) # float
t4 = ('jason')
print(type(t4)) # str
t5 = ({'name':'jason'})
print(type(t5)) # dict
元组在空括号是转换元组 当元组内是一个数据值时,数据值是什么数据类型就会成什么转成什么数据类型 当元组是一个数据值时在后面加上逗号
1.索引取值: 只能取不能改 否则会报错
t1 =(11,22,33,44,55,)
print(t1[2]) # 22
2.统计元组内的数据个数:
t1 = (11,22,33,44,55)
print(len(t1)) # 5
3.查与改:
t1 = (11,22,33,44,55,)
print(t1[1]) # 22
元组支持查询不支持更改
4.需要注意的笔试题:
"""元组的索引不能改变绑定地址"""
t1 = (11,22,33,44,[55,66])
t1[-1].append(77)
print(t1) # (11,22,33,44,[55,66,77])
5.切片
t1 = (11,22,33,44,55,)
t1[0:5:1] # 11,22,33,44,55
字典的内置方法(dict)
类型转换
print(dict([('name','joker'),('pwd',11)])) # {'name': 'joker', 'pwd': 11}
print(dict(name='joker',pwd=11)) #{'name': 'joker', 'pwd': 11}
fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
{}.fromkeys(('name','age','sex'),None)
{'age': None, 'sex': None, 'name': None}
字典很少涉及到类型转换 都是直接定义使用的
1字典内的K:V键值对是无序的 无法索引取值
2.取值操作
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
print(info['username']) # lisa 不推荐使用 键不存在的话会直接报错
关键字:.get
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
print(info.get('username')) # lisa
print(info.get('xxx')) # None 键不存在返回得值 默认返回None
print(info.gnt('username','键不存在返回不存在')) #lisa
print(info.gnt('某某','键不存在返回不存在')) # 键不存在返回不存在
3.统计字典中的键值对个数
print(len(info))
4.修改数据
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
info['username'] ='jasonNb' # 通过字典里的K来修改
print(info) # info = {'username': 'jasonNb','pwd': 11,'hobby': ['read', 'run']} 键存在则是修改
5.新增数据
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
info['salary'] = 6
print(info) # {'username': 'lisa','pwd': 11,'hobby': ['read', 'run'],'salary:6'} 键不存在则是增加
6.删除数据
方式一:关键字del 通过索引K来删除
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
del info['username']
print(info) # ['pwd': 11,'hobby': ['read', 'run']}
方式二:关键字.pop
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
res = info.pop('usermane')
print(info) # ['pwd': 11,'hobby': ['read', 'run']}
方式三:关键字.popitem
info.popitem # 随机删除
7.快速获取键 值 键值对数据
7.1关键字:.keys()
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
print(info.keys()) # 'username','pwd',hobby 获取字典所有的K值
7.2关键字:.values()
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
print(info.values) # 'lisa',11,'read','run' 获取字典所有的V值
7.3关键字:.items()
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
print(info.items) # 获取字典KV键值对数据 组织成列表套元组dict_items([('username', 'lisa'), ('pwd', 11), ('hobby', ['read', 'run'])])
8.修改字典数据 键存在则是修改 键不存在则是新增
关键字.update
9.快速构造字典 给的值默认 认情况下所有的键都用一个
关键字:.fromkeys
res = dict.fromkeys([1, 2, 3], None)
print(res) # {1: None, 2: None, 3: None}
10.键存在获取则获取对应的数据值 键不存在则设置并返回设置的新值
关键字.setdefault()
info = {'username': 'lisa','pwd': 11,'hobby': ['read', 'run']}
res1 = info.setdefault('username','lisaNb')
print(res,info) # lisa {'username': 'jason', 'pwd': 123, 'hobby': ['read', 'run']}
res2 = info.setdefault('moumou','lisaNb')
print(res,info) # lisaNb {'username': 'jason', 'pwd': 123, 'hobby': ['read', 'run'], 'moumou': 'lisaNb'}
集合内置方法(set)
类型转换
支持for徐悲鸿的 并且数据必须是不可变类型
1.定义空集合需要使用关键字才可以 set()
2.集合内数据必须是不可变类型(整型 浮点型 字符串 元组 布尔值)
'''去重'''集合自带去除重复功能
3.s1 = {1,2,1,5,2,1,3,5,4,9,6,2,2}
print(s1) # {1, 2, 3, 4, 5, 6, 9}
'''关系运算'''
模拟两个人的好友集合
f1 = {'jason,tony','lisa','joker'}
f2 = {'tony','jason','lili','kevin'}
1.求f1和f2的共同好友 &
print(f1 & f2) # {'jason', 'tony'}
2.求f1/f2独有好友
print(f1 - f2) # {'lisa', 'joker'}
print(f2 - f1) # {'kevin', 'lili'}
3.求f1和f2所有的好友
print(f1 | f2) # {'lisa', 'joker', 'kevin', 'tony', 'lili', 'jason'}
4.求f1和f2各自独有的好友(排除共同好友)
print(f1 ^ f2) #{'lili', 'joker', 'kevin', 'lisa'}
5.父集 子集
s1 = {1,2,4,7,8,9}
s2 = {1,2,4}
s3 = {1,2,3}
print(s1 > s2) # True
print(s1 > s3) # False
s1是否是s2的父集,s1是否是s3的父集,其实就是在判断是不是包含在对方里