数值类型和进制转换;字符串、列表、元组、字典、集合相关运用
一、数值类型及进制转换
1、int只能将字符串中包含纯数字转成整型
2、进制转换
#十进制转成其他进制
# print(bin(12)) # 0b1100 # print(oct(12)) # 0o14 12 => 1*(8**1) + 2(8**0) # print(hex(12)) # 0xc #输出结果 ''' 0b1100 0o14 0xc '''
# 进制转换(了解**)
# 其他进制转成十进制
print(int('10',2)) # 2进制转
print(int('10',8)) #8进制转
print(int('10',16)) #16进制转
3、可变类型与不可变类型
可变类型:值改变的情况下,id不变,说明你改的是原值
# 不可变类型:值改变的情况下,id一定变
# python变量可以分为两种类型
# 不可变类型(数值、字符串、元组)
# 可变类型(列表、字典、集合)
二、字符串转换运用
1、按索引取值(正向取+反向取) :只能取(不可修改)
2、切片(顾头不顾尾,步长):从一个大的字符串中截取一段新的小字符串
# 左边的固定就是头,右边固定就是位 没有说按数字来分头尾
例:
s = 'hello' print(s[0:5]) print(s[0:10:2]) # 步长表示隔几个取一个,步长不写默认是1 print(s[-1]) print(s[5:0:-1]) # 切片取值默认是从左往右的 ,了解负数取值 print(s[-1:-10:-1]) #输出结果 ''' hello hlo o olle olleh '''
3、len(长度):
统计的是字符串中字符的个数
s1 = 'hello'
print(len(s1)) # 5
4、in 和 not in(成员运算):
判断一个子字符串是否存在于一个大的字符串中
5、strip
去掉字符串左右两边的字符,不管中间的
使用内置的方法统一采用 句点符(.)
strip()默认去除字符串首尾的空格,
6、split(切分)
针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值
# 强调:split切分出来的数据类型是一个列表
# 如果不指定那么split和rsplit效果是一样
data = 'jason|123| handsome' print(data.split('|')) username,password,info = data.split('|') print(username,password,info)
#输出结果
#['jason', '123', ' handsome']
#jason 123 handsome
7. .lower() 字符串全部小写
.upper() 字符串全部大写
8、startswith ,endswith :判断以什么结尾和开始
9、format的三种玩法
第一种、按位置站位(和%s原理一直)
例:str1 = 'my name is {} my age is {}'.format(18,'jason',)
第二种、按索引占位
例:str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18)
第三种、按名道姓占位(关键字传参数)
例:str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18)
10、join : 将容器类型中的多个元素通过指定字符拼接成一个字符串
例:
res = ['jason', '123', 'handsome'] str = '$'.join(res) print(str) #输出结果 # jason$123$handsome
11、replace 替换字符串中的字符(可选数量)
例:
str = 'egon is dsb and egon is sb he has a BENZ' res = str.replace('egon','kevin',1) #输出结果 # kevin is dsb and egon is sb he has a BENZ
12、isdigit # 判断字符串中包含的是否为纯数字
if age.isdigit():
13、find、rfind、index、rindex、count
s = 'kevin is dsb o and kevin is sb' print(s.find('dsb')) # 返回的是d字符所在的索引值 print(s.find('xxx')) # 找不到的时候不报错返回的是-1 print(s.find('i',0,3)) # 还可以通过索引来限制查找范围 print(s.index('o')) # 返回所传字符所在的索引值 print(s.index('i',0,5)) # 返回所传字符所在的索引值 , 如果找不到会报错 print(s.count('n')) # 统计字符出现的次数 #输出结果 ''' 9 -1 -1 13 3 3 '''
14、center(中间),ljust,rjust,zfill(用0补充) 用法
s9 = 'tom' print(s9.center(12,'*')) print(s9.ljust(6,'$')) print(s9.rjust(6,'$')) print(s9.rjust(6,' ')) print(s9.zfill(6)) #输出结果 ''' ****tom***** tom$$$ $$$tom tom 000tom '''
16、expandtabs 多加几个 Tab 键
s10 = 'a\tbc' print(s10.expandtabs(10)) #输出结果 #a bc
15、captalize(首字母大写)、swapcase(大小写互换)、title(每个单词首字母大写)
s12 = 'hElLo WoRLD sH10' print(s12.capitalize()) # Hello world 首字母大写 print(s12.swapcase()) # 大小写互换 print(s12.title()) # 每个单词的首字母大小 #输出结果 ''' Hello world sh10 HeLlO wOrld Sh10 Hello World Sh10 '''
16、is 数字系列
''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别。
''.isdecimal(): unicode 只识别普通的阿拉伯数字。
''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了
三、列表删减元素取值
1、#作用:多个装备,多个爱好,多门课程,多个女朋友等
#定义:[]内可以有多个任意类型的值,逗号分隔
list内部原理就是for循环取值 然后一个个塞到列表中去
2、append() # 注意append值能将被添加的数据当作列表的一个元素
3、任意位置添加元素
# l.insert(2,10) # 通过索引在任意位置添加元素
4、extend 添加容器类型数据
l = [11,22,33,44,55] l1 = [99,88,77,66] l.append(l1) #输出 [11, 22, 33, 44, 55, [99, 88, 77, 66]] l.insert(-1,l1) #输出[11, 22, 33, 44, [99, 88, 77, 66], 55] l.extend(l1) #输出 [11, 22, 33, 44, 55, 99, 88, 77, 66] l.extend([1,]) #输出[11, 22, 33, 44, 55, 1] # 内部原理for循环l1一个个追加到列表的尾部
5、删除 .pop(2) 、 del li[2]
del li[2] # del适用于所有的删除操作
.pop() # 尾部弹出,也可按照索引弹出
6、reverse 列表倒序
sort 排序、默认情况下从小到大(升序)
srot(reverse =true)可以通过指定参数修改默认排序(降序)
#l.sort() 排序 默认情况下是从小到大(升序) l1 = [43,6,1,7,99] print(l1) # [43, 6, 1, 7, 99] l1.sort(reverse=False) # 可以通过指定参数来修改默认的拍讯规则(降序) print(l1) # [1, 6, 7, 43, 99]
#队列 先进先出
#堆栈 先进后出
四、元组
1、作用:能存多个元素,元素之间逗号隔开,元素可以是任意类型,元组不可被修改
定义:与列表相比,只是把 [ ] 变 ( )。
2、按索引取值(正向+反向取):只能取值 #tu([X])=
切片(顾头不顾尾,步长)
3、在定义容器类型的时候,哪怕内部只有一个元素,你也要用逗号隔开 区分一下。
t1 = tuple(1) # 报错 必须传容器类型 n = ('a') n1 = (1) print(type(n),type(n1)) # <class 'str'> <class 'int'>
4、切片(顾头不顾尾,步长) # print(t[::2])
长度 # print(len(t))
成员运算in和not in # print('a' in t)
循环 # for i in t:
# print(i)
五、字典
作用:能存存储多组 key:value键值对 key是对value的描述 key通常情况下都是字符串
其实这个key只能是不可变类型,value可以是任意数据类型
1、按Key存取值
d3 = {'name':'jason','password':'123'} print(id(d3)) # 31338360 print(d3['name']) # jason d3['age'] = 18 # 赋值语句当key不存在的情况下,会自动新增一个键值对(******) print(d3,id(d3)) # {'name': 'jason', 'password': '123', 'age': 18} 31338360
2、长度len:统计键值对的个数
3、成员运算in和not in 对于字典来说只能判断key值
d3 = {'name':'jason','password':'123'} print('123' in d3) # False print('name' in d3) # True
4、删除
d3 = {'name':'jason','password':'123'} del d3['name'] print(d3) # {'password': '123'} d2 = {'name':'jason','password':'123'} res = d2.pop('name') # 弹出仅仅是value print(res) # jason res = d3.pop('age') # 当键不存在的时候直接报错 d3.clear() print(d3) # {}
5、定义字典的三种方式
d1 = {'name':'jason','password':123} # 掌握 d2 = dict(name='jason',password=123,age=18) # (******) print(d1,d2,type(d2)) # {'name': 'jason', 'password': 123} {'name': 'jason', 'password': 123, 'age': 18} <class 'dict'>
6、键keys(),值values(),键值对items()
# 5、键keys(),值values(),键值对items() d1 = {'name':'jason','password':123} print(d1.keys()) # dict_keys(['name', 'password']) 老母猪 for k in d1.keys(): print(k) # name print(d1.values()) # dict_values(['jason', 123]) 老母猪 现在就把它当成一个列表来看即可 print(d1.items()) # dict_items([('name', 'jason'), ('password', 123)]) # 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的value
7、get()根据key获取value
d1 = {'name':'jason','pwd':123} print(d1['name']) # jason # print(d1['age']) print(d1.get('name','你给我的name在字典的key中')) # jason res = d1.get('age') # 当字典的key不存在的情况 不报错 返回None print(res) # None res1 = d1.get('xxx','你给我的age在字典的key中') # 当字典的key不存在的情况 不报错 返回None # get可以传第二个参数。当你的key不存在的情况下,返回第二个你写好的参数信息 print(res1) # 你给我的age在字典的key中 print(d1.get('xxx','asdsad')) # asdsad # 第二个参数不写的话 当key不存在的情况下返回None,写了就返回写了内容
8、dict.fromkeys() 快速的创建一个字典
dict.setdefault() 尾部以元组的形式弹出键值对
l1 = ['name','password','age','hobby'] print(dict.fromkeys(l1,123)) #{'name': 123, 'password': 123, 'age': 123, 'hobby': 123} #dict.popitem()# 尾部以元组的形式弹出键值对 # dict.setdefault() d1 = {'name':'jason','pwd':123} res1 = d1.setdefault('name','xxoo') # 当键存在的情况下 不修改值 并且将原先key对应值返回给你 print(d1,res1) # {'name': 'jason', 'pwd': 123} jason res2 = d1.setdefault('age',18) # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你 print(d1,res2) # {'name': 'jason', 'pwd': 123, 'age': 18} 18
dict.update() 更新
d1 = {'name':'jason','pwd':123} d2 = {"age":18} # d1.update(d2) d1['age'] = 18 d1.update(age=666) print(d1) # {'name': 'jason', 'pwd': 123, 'age': 666}
六、集合
1、关系运算和去重才会用
s1 = set() print(type(s1)) # <class 'set'> 注意在定义空集合的只能用关键字set x = {} # <class 'dict'> 如果你仅仅只写了一个大括号 那么python默认将它当做字典类型 print(type(x)) # <class 'dict'>
# 集合的元素遵循三个原则:
# 1:每个元素必须是不可变类型
# 可变:不可hash
# 不可变:可hash
s = {1,2,3,4,5,6,'a',(1,2),[1,2]} # 报错
s = {1,2,3,4,5,6,'a',(1,2),{"name":'jason'}} # 报错
2、没有重复的元素
s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5} print(s) # {1, 2, 3, 4, 5} # 自动将重复的元素 去除
3、无序,不支持索引取值
平时:注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
4、 | 合集
& 交集
- 差集
^ 对称差集(键盘shift+6)
5、删除
.pop()
.remove()
.discard() # 使用discard和remove都可以删除set当中的元素,区别就是remove的元素在set当中没有的话会报错,而discard不会