1.直入主题
python中基本的数据类型有
数字(整形,长整形,浮点型,复数)
字符串
字节串:在介绍字符编码时介绍字节bytes类型
列表
元组
字典
集合
下面我们直接将以下面几个点进行学习
#一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 可以存多个值,值都可以是什么类型 2 有序or无序 3 可变or不可变 !!!可变:值变,id不变。可变==不可hash !!!不可变:值变,id就变。不可变==可hash
2.常用方法总结
1.数字(常用就是表达一个值,没有专用的方法)
数字类型中(比如整形,浮点型等)
2.字符串
#常用作描述性质的数据 #定义:在单引号双引号三引号内,由一串字符组成 name = 'zhang san' #常用的字符串操作方法 #1按索引取值,只能去不能修改 char1 = name[0]#输出第一个元素 print(char1) #2.切片(顾头不顾尾) # 输出从0-4的字符,不包括4这个索引对应的值,返回的是一个新的=字符串 char2 = name[0:4] print(char2) #3.长度计算 print(len(name)) #4.成员运算in 和 not in if 'z' in name: print('我在') else: print('赶紧加我') #5.移除空白和指定的字符串,只能去除两边的空白和指定字符串,中间的去除不了 message = ' 我就是我 颜色不一样的烟火 ' print(message.strip()) test = '……&*&(&(&……这就是你们想的(*^*%^&%' print(test.strip('……&*&(&(&……(*^*%^&%')) #6.大小写转换 print(name.lower()) print(name.upper()) print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 print(name.title()) #每个单词的首字母大写 #7.判断字符串的开始和结束 print(name.startswith('zhang')) print(name.endswith('g')) #8.格式化字符串的三种方法 res1 = '{} {} {}'.format('zhang','san','ni hao') res2 = '{1} {0} {1}'.format('我就是我','你看啥','说你呢') res3 = '{name} {age} {sex}'.format(sex='male',age=19,name='zhangsan') print(res1) print(res2) print(res3) #9.字符串分割 res4 = '18|张三|男|上海科技学院|计算机科学与技术专业' print(res4.split('|')) #10.拼接字符串,添加字符串分割符,在添加字符数组 res5 = '--'.join(res4.split('|')) print(res5) #11.替换字符串,替换res4中的|为++,后面的参数还可以指定替换的次数 res6 = res4.replace('|','++') print(res6) #12.判断是bytes和unicode类型,是最常用的用于判断字符是否为数字的方法 age = input('请输入年级>>:') print(age.isdigit()) print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 #13.查找字符中特定字符出现的次数 print(name.count('z'))
3.列表
#常用作描述多个值 #定义:[]内,有多个任意值,逗号分隔 #1.按值索引 可以存也可以取 showList = ['我','就是','我','不一样','的','烟火'] print(showList[3]) showList[0] = '还有谁' #2.切片,[0:5:2],从0-5这六个元素按着步长为2获取 # 步长可以为负值,开始 结束都是可以省略的,步长为-1 就是反转列表 # 初始值 或者结束值省略都是默认从最前面或者到最后面 print(showList[0:5:2]) print(showList[::-1]) #3.列表的长度 print(len(showList)) #4.成员运算in和not in print('haha' in showList) #5.列表中添加元素和删除元素 # 添加在列表最后 showList.append('哈哈哈') print(showList) #插入列表中的任意位置 showList.insert(3,'插入的数据') print(showList) #6.删除 del showList[0] #这是一种通用的删除方式 res = showList.remove('哈哈哈') #单纯的删除 没有返回值 res1 = showList.pop()#默认是删除列表最后一个元素 返回删除的元素 res2 = showList.pop(2)#指定删除元素的位置 #7.循环 #没有索引值,要手动拿到索引值 for value in showList: index = showList.index(value) print(index,value) #添加索引值和元素 for index,value in enumerate(showList): print(index,value)
4.元祖
#一:tuple基本使用 # 用途:不可变的列表 # 定义方式:()内用逗号分隔开多个任意类型的元素 t=('a',1,3.3) #t=tuple(('a',1,3.3)) print(t,type(t)) t1=tuple('hello') # 任意可以被for循环的数据类型都可以被tuple转成元组 print(t1,type(t1)) # 常用操作+内置的方法 #优先掌握的操作: #1、按索引取值(正向取+反向取):只能取 #2、切片(顾头不顾尾,步长) t1=(1,2,3,4,5) print(t1[0:3]) #3、长度 #4、成员运算in和not in #5、循环 for item in t1: print(item) #二:该类型总结 # 多个值 # 有序 # 不可变: # 元组可变指的元组内索引对应的内存地址不变 # 列表可变指的列表内索引对应的内存地址可以改变 l1=['a','b','c'] print(id(l1[0])) l1[0]='A' print(id(l1[0])) t1=('a','b',[3.1,'bbb']) print(id(t1[0]),id(t1[1]),id(t1[2])) t1[2][0]=3.2 print(id(t1[0]),id(t1[1]),id(t1[2])) # # # # # 需要掌握的操作: t=('a','b','a','a') t.index('c') print(t.index('a',5,7)) print(t.count('a'))
5.字典
#一:基本使用 # 用途:存多个种类不同的值 # 定义方式:在{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,key应该对value有描述性的功能 # 注意:value可以是任意类型,而key必须是不可变类型且唯一, # 即字典的key可以是int、float、tuple、str,通常是字符串类型 d={3.1:1,(1,2,3):2222} #d=dict({3.1:1,(1,2,3):2222} ) print(d[(1,2,3)]) # 了解 d1=dict(x=1,y=2,z=3) print(d1) # 了解 d2=dict([('name','egon'),['age',18],('sex','male')]) print(d2) # 常用操作+内置的方法 #优先掌握的操作: #1、按key存取值:可存可取 d={'name':'egon','age':18} print(id(d)) d['name']='EGON' print(id(d)) print(d) l=['a','b'] l[2]='c' d={'name':'egon','age':18} d['sex']='male' print(d) #2、长度len d={'name':'egon','age':18,'age':19,'age':20} print(d) print(len(d)) #3、成员运算in和not in:判断的是字典的key d={'name':'egon','age':18} print('name' in d) #4、删除 d={'name':'egon','age':18} res=d.pop('sex',None) print(res) res=d.pop('name',None) # 删除key对应的元素,返回的是value值 print(res) print(d) #5、键keys(),值values(),键值对items() #了解:python2中的格式 # >>> d={'name':'egon','age':18} # >>> # >>> d.keys() # ['age', 'name'] # >>> d.values() # [18, 'egon'] # >>> # >>> d.items() # [('age', 18), ('name', 'egon')] #python3中的格式 d={'name':'egon','age':18} # print(d.keys()) # print(d.values()) # print(d.items()) # print(list(d.keys())) # print(list(d.values())) # print(list(d.items())) #6、循环 d={'name':'egon','age':18} # for k in d.keys(): # print(k) # # for k in d: # print(k,d[k]) # for v in d.values(): # print(v) # for k,v in d.items(): #k,v=('name', 'egon') # print(k,v) #7:get取值 # d={'name':'egon','age':18} # d['sex'] # res=d.get('sex',None) # print(res) # res1=d.get('name',None) # print(res1) #二:该类型总结 # 存多个值 # 无序 # 可变 # 需要掌握 d={'name':'egon','age':18} # res=d.popitem() # print(d,res) # d.update({'x':1,'name':'EGON'}) # 老字典d没有的则添加,有的则以新字典为准进行修改 # print(d) # 了解 # d={'name':'egon','age':18} # res1=d.setdefault('name','EGON') # 当key存在时,不修改值,会返回key对应的原值 # print(res1) # # res2=d.setdefault('sex','male') # 当key不存在时,则新增一个元素'sex':'male',会返回新增的value # print(res2) # s='hello alex alex say hello sb sb' # # {'hello':2,'alex':2,'say':1,'sb':2} # d={} # words=s.split() # # for word in words: # print(word,words.count(word)) # # d[word]=words.count(word) # d.setdefault(word,words.count(word)) #{'hello':2} # print(d) # items=('name','age','sex') # dic=d.fromkeys(items,None) # {'name':None,'age':None,'sex':None} # print(dic) # dic={} # for item in items: # dic[item]=None # print(dic)
6.集合
#作用:去重,关系运算, #定义: 知识点回顾 可变类型是不可hash类型 不可变类型是可hash类型 #定义集合: 集合:可以包含多个元素,用逗号分割, 集合的元素遵循三个原则: 1:每个元素必须是不可变类型(可hash,可作为字典的key) 2:没有重复的元素 3:无序 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 #优先掌握的操作: #1、长度len #2、成员运算in和not in #3、|合集 #4、&交集 #5、-差集 #6、^对称差集 #7、== #8、父集:>,>= #9、子集:<,<=
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} # 求出即报名python又报名linux课程的学员名字集合 print(pythons & linuxs) # 求出所有报名的学生名字集合 print(pythons | linuxs) # 求出只报名python课程的学员名字 print(pythons - linuxs) # 求出没有同时这两门课程的学员名字集合 print(pythons ^ linuxs)
去重 showlist=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'egon','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ] #去重,无需保持原来的顺序 l=['a','b',1,'a','a'] print(set(l)) #去重,并保持原来的顺序 #方法一:不用集合 l=[1,'a','b',1,'a'] l1=[] for i in l: if i not in l1: l1.append(i) print(l1) #方法二:借助集合 l1=[] s=set() for i in l: if i not in s: s.add(i) l1.append(i) print(l1) #同上方法二,去除文件中重复的行 import os with open('db.txt','r',encoding='utf-8') as read_f, open('.db.txt.swap','w',encoding='utf-8') as write_f: s=set() for line in read_f: if line not in s: s.add(line) write_f.write(line) os.remove('db.txt') os.rename('.db.txt.swap','db.txt') #列表中元素为可变类型时,去重,并且保持原来顺序 l=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'egon','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ] # print(set(l)) #报错:unhashable type: 'dict' s=set() l1=[] for item in l: val=(item['name'],item['age'],item['sex']) if val not in s: s.add(val) l1.append(item) print(l1) #定义函数,既可以针对可以hash类型又可以针对不可hash类型 def func(items,key=None): s=set() for item in items: val=item if key is None else key(item) if val not in s: s.add(val) yield item print(list(func(l,key=lambda dic:(dic['name'],dic['age'],dic['sex']))))