一、数据类型
(一)、小技巧
1、PyCharm:选中多行,按“Ctrl+/”可批量注释掉
(二)、字符串
1、startswith(str,[,start][,end])
#判断字符串是否以str开头 s = 'lichuanlei' print(s.startswith('le',7,9))
实例输出结果:
True
2、replace(str_old,str_new[,num])
#替换字符串 s = 'lichuanlei' print(s.replace('l','L',2)) print(s.replace('l','L'))
实例输出结果:
LichuanLei LichuanLei
3、strip
#去除左右字符串 s = ' \n\tlichuanlei\n\t ' print(s.strip()) #去除首尾空格 s2 = 'lichuanlei' print(s2.strip('li')) #去除首尾字符串‘li’
实例输出结果:
lichuanlei chuanle
4、split
#默认按空格分隔,返回一个列表 #str-->list s = 'Tom Mary Peter' s2 = 'Tom:Mary:Peter' s3 = ':Tom:Mary:Peter' print(s.split()) print(s2.split(':')) print(s3.split(':'))
实例输出结果:
['Tom', 'Mary', 'Peter'] ['Tom:Mary:Peter'] ['', 'Tom', 'Mary', 'Peter']
5、join
t = 'Tom', 'Mary', 'Peter' s = ['Tom', 'Mary', 'Peter'] #列表里元素必须都是str类型 t2 = '+'.join(t) s2 = ':'.join(s) print(t2) print(s2)
实例输出结果:
Tom+Mary+Peter Tom:Mary:Peter
6、count
s = 'abcdefgab' s1 = s.count('a') s2 = len(s) print(s1) print(s2)
实例输出结果:
2 9
7、format
msg = '我叫{},今年{}岁,性别{}!!!'.format('Tom','22','男') #第一种用法 msg2 = '我叫{0},今年{1}岁,性别{2},我依然叫{0}!!!'.format('Tom','22','男') #第二种用法 msg3 = '我叫{name},今年{age}岁,性别{sex}!!!'.format(name='Tom',sex='男',age=22) #第三种用法 print(msg) print((msg2))
实例运行结果:
我叫Tom,今年22岁,性别男!!! 我叫Tom,今年22岁,性别男,我依然叫Tom!!! 我叫Tom,今年22岁,性别男!!!
8、is系列
name = 'Tom123' c = 'abcd' num = '123' print(name.isalnum()) #字符串由字母或者数字组成 print(c.isalpha()) #字符串只由字母组成 print(num.isdecimal()) #字符串只由十进制组成 print(num.isnumeric()) #字符串只由十进制组成
实例输出结果:
True True True True
9、upper lower
s = 'abcCDE' print(s.upper()) #字符串所有字符转大写 print(s.lower()) #字符串所有字符转小写
实例输出结果:
ABCCDE abccde
10、格式化输出print
s = '321' for i in s: #占位符,以下两个print打印结果一样 print('倒计时{}秒'.format(i)) #print('倒计时%s秒'%i) print('出发!')
实例输出结果:
倒计时3秒 倒计时2秒 倒计时1秒 出发!
(三)、循环
1、while
s = 'lichuanlei' count = 0 while count < len(s): print(s[count]) count+=1
实例输出结果:
l i c h u a n l e i
2、for 变量 in iterable
eg1:
s = 'lichuanlei' #可迭代对象 for n in s: print(n)
实例输出结果:
l i c h u a n l e i
eg2:
s = 'lichuanlei' for i in s: print(i) if i == 'a': break
实例输出结果:
l i c h u a
eg3:
#实现多个数相加 result = 0 num = input('请输入内容(格式如:1+2+……):') lst1 = num.split('+') for i in lst1: result = result+int(i) print(result)
eg4:
#判断字符串中有多少个数字 content = input('请输入:') result = 0 for i in content: if i.isdecimal(): result +=1 print('共有%s个数字'%result)
(四)列表
1、增加元素
1.1 append:追加
#append : 追加 lst1 = ['Tom','Peter','Jerry'] while 1: name = input('请输入员工姓名(按Q或q退出):') if name.upper() == 'Q': break lst1.append(name) print(lst1)
1.2 insert:插入式增加
# 插入式增加元素 lst1 = ['Tom','Peter','Jerry'] lst1.insert(1,'Mary') print(lst1)
实例运行结果:
['Tom', 'Mary', 'Peter', 'Jerry']
1.3 extend:迭代着追加
#迭代着追加 lst1 = ['Tom','Peter','Jerry'] lst1.extend('ABC') #此次增加‘A’,‘B’,‘C’三个元素 lst1.extend(['ABC','Work','Job']) # 此次又增加'ABC','Work','Job'三个元素 print(lst1)
实例运行结果:
['Tom', 'Peter', 'Jerry', 'A', 'B', 'C', 'ABC', 'Work', 'Job']
2、删除元素
2.1 pop:按照索引删除
lst1 = ['Tom','Peter','Jerry','Tom','Mary'] lst2 = ['Tom','Peter','Jerry'] pop1 = lst1.pop(-2) #按照索引删除(返回的是删除的元素) pop2 = lst2.pop() #默认删除末尾元素(返回的是删除的元素) print(lst1,pop1) print(lst2,pop2)
实例运行结果:
['Tom', 'Peter', 'Jerry', 'Mary'] Tom lst2 = ['Tom','Peter'] Jerry
2.2 remove:按照指定元素删除
lst1 = ['Tom','Peter','Jerry','Tom','Mary'] lst1.remove('Tom') #按照指定元素删除,若有重名元素,默认从左删除第一个元素 print(lst1)
实例运行结果:
['Peter', 'Jerry', 'Tom', 'Mary']
2.3 clear :清空
lst1 = ['Tom','Peter','Jerry','Tom','Mary'] lst1.clear() #清空
2.4 del
lst1 = ['Tom','Peter','Jerry','Mary'] lst2 = ['Tom','Peter','Jerry','Tom','Mary'] del lst1[-2] #按照索引删除元素 del lst2[::2] #按照切片步长删除元素 print(lst1) print(lst2)
实例运行结果:
['Tom', 'Peter', 'Mary'] ['Peter', 'Tom']
3、更改元素
lst1 = ['Tom','Peter','Jerry','Mary'] lst2 = ['Tom','Peter','Jerry','Tom','Mary'] lst3 = ['Tom','Peter','Jerry','Tom'] lst1[1] = '孙悟空' #按照索引更改元素 lst2[2:] = 'ABCDEFGH' #按照切片更改,超长增加会依次加在后 lst3[::2] = ['RR','YY'] #按照切片(步长)更改,数量必须一一对应 print(lst1) print(lst2) print(lst3)
实例运行结果:
['Tom', '孙悟空', 'Jerry', 'Mary'] ['Tom', 'Peter', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] ['RR', 'Peter', 'YY', 'Tom']
4、查询
lst1 = ['Tom','Peter','Jerry','Mary'] lst2 = ['Tom','Peter','Jerry','Tom','Mary'] for i in lst1: #遍历所有元素 print(i) print(lst2[-1]) #按照索引查询元素 print(lst2[::2]) #按切片(步长)查询元素
实例运行结果:
Tom Peter Jerry Mary Mary ['Tom', 'Jerry', 'Mary']
5、嵌套
eg1:
lst1 = [1,2,'taibai',[1,'alex',3]] lst1[2] = lst1[2].upper() lst1[3].append('老男孩教育') lst1[-1][1] = lst1[-1][1]+'sb' print(lst1)
实例运行结果:
[1, 2, 'TAIBAI', [1, 'alexsb', 3, '老男孩教育']]
eg2:
lst1 = [2,30,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lst1[3][2][1][0] = lst1[3][2][1][0].upper() #将列表lst1中的‘tt’变成大写 lst1[3][2][1][1] = '100' #将列表中的数字3变成字符串‘100’ lst1[3][2][1][2] = 101 #将列表中的字符串‘1’变成数字101 print(lst1)
实例运行结果:
[2, 30, 'k', ['qwe', 20, ['k1', ['TT', '100', 101]], 89], 'ab', 'adv']
eg1:
#判断一句话是否是回文 content = input('请输入:') if content == content[-1::-1]: print('%s 是回文!'%content) else: print('%s 不是回文!'%content)
(五)元组
c = 1,3 a,b = c print(a,b) a,b = b,a #交换 print(a,b)
实例运行结果:
1 3 3 1
(六)range
for i in range(1,11): print(i,end=' ') #打印1……10 print('\n') for i in range(1,11,2): print(i,end=' ') print('\n') for i in range(10,0,-1): print(i,end=' ')
实例运行结果:
1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 10 9 8 7 6 5 4 3 2 1
lst1 = range(5) print(lst1) print(lst1[1:3]) print(lst1[-1]) for i in range(1,5,-1): print(i) #不打印任何内容
实例运行结果:
range(0, 5) range(1, 3) 4
(七)字典
1、创建
#创建字典的方法: dic = dict((('one',1),('two',2),('three',3))) #第一种 dic2 = dict(one=1,two=2,three=3) #第二种 dic3 = dict({'one':1,'two':2,'three':3}) #第三种 print(dic,'\n',dic2,'\n',dic3)
实例运行结果:
{'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 2, 'three': 3}
2、增
eg1:
dic = {'name':'孙悟空','age':26} dic['sex'] = '男' #增加 dic['age'] = 28 #有则改之无则增加 print(dic)
实例运行结果:
{'name': '孙悟空', 'age': 28, 'sex': '男'}
eg2:
dic = {'name':'孙悟空','age':26} dic['sex'] = '男' #增加 dic['age'] = 28 #有则改之无则增加 dic.setdefault('hobby') #给键设置默认值:None空 dic.setdefault('hobby2','跑步') dic.setdefault('age',30) #有则不变,无则增加 print(dic)
实例运行结果::
{'name': '孙悟空', 'age': 28, 'sex': '男', 'hobby': None, 'hobby2': '跑步'}
3、删
dic = {'name':'孙悟空','age':26,'sex':'男'} dic2 = {'name':'孙悟空','age':26} print(dic.pop('age')) #按照键删除键值对,有返回值 print(dic.pop('hobby','没有此键')) #设置pop第二个参数时则有无键值对都不会报错 del dic['name'] #按键删除指定元素,但是没有返回值 dic2.clear() #清空键值对内容 print(dic) print(dic2)
实例运行结果:
26 没有此键 {'sex': '男'} {}
4、改
dic = {'name':'孙悟空','age':26} dic['age'] = 30 print(dic)
实例运行结果:
{'name': '孙悟空', 'age': 30}
5、查
dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑','爬']} print(dic.get('hobby_list')) print(dic.get('hobby_list2')) print(dic.get('hobby_list2','查无此键')) #可以设置返回值 print(dic['name'])
实例运行结果:
['打球', '跑步', '爬山'] None 查无此键 孙悟空
6、keys()
dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']} print(list(dic.keys())) #可将键转换成列表 for key in dic: #另一种写法:for key in dic.keys print(key) #遍历字典dic的键
实例运行结果:
['name', 'age', 'hobby_list'] name age hobby_list
7、values()
dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']} print(list(dic.values())) #可将值转换成列表 for value in dic.values(): print(value) #遍历字典dic的值
实例运行结果:
['孙悟空', 26, ['打球', '跑步', '爬山']] 孙悟空 26 ['打球', '跑步', '爬山']
8、items()
dic = {'name':'孙悟空','age':26,'hobby_list':['打球','跑步','爬山']} for value in dic.items(): print(value) #遍历字典dic的项目后,是变成元组 for key,value in dic.items(): #利用元组拆包 print(key,value) #遍历字典dic的项目后
实例运行结果:
('name', '孙悟空') ('age', 26) ('hobby_list', ['打球', '跑步', '爬山']) name 孙悟空 age 26 hobby_list ['打球', '跑步', '爬山']
eg:
1、增加键值对:'k4':'v4' ; 2、将'k1'值改成’alex'
3、将k3值加一个44; 4、将K3键第一个位置加个数字18
dic = {'k1':'v1','k2':'v2','k3':[11,22,33]} dic.setdefault('k4','v4') #增加键值对:'k4':'v4' dic['k1'] = 'alex' #将'k1'值改成’alex' dic['k3'].append(44) #将k3值加一个44 dic['k3'].insert(0,18) #将K3键第一个位置加个数字18 print(dic)
实例运行结果:
{'k1': 'alex', 'k2': 'v2', 'k3': [18, 11, 22, 33, 44], 'k4': 'v4'}
9、字典的嵌套
#1、获取汪典的名字 #2、获取这个字典:{'name':'张怡','age':38} #3、获取汪典妻子的名字 #4、获取汪典第三个孩子的名字 dic = { 'name':'汪典', 'age':48, 'wife':[{'name':'张怡','age':38},], 'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'} } print(dic.get('name')) print(dic['wife'][0]) print(dic['wife'][0]['name']) print(dic['children']['girl_three'])
10、update
dic = {'name':'Tom','age':28} dic.update(hobby='运动',hight='175') #无则增加 dic.update(name='Marry') #有则更改 dic.update([(1,'one'),(2,'two'),(3,'three')]) print(dic)
(八)练习题
eg1:
lst1 = [] lst2 = [] for i in list(range(100,9,-1)): #100~10,倒序将所有偶数添加一个新列表中 if i%2==0: lst1.append(i) print('100-10偶数:',lst1) for i in lst1: if i%4 ==0: lst2.append(i) print('100-10被4整除的数:',lst2)
eg2:移除每个元素的空格,并找出以‘A’或者‘a’开头,并以‘c’结尾的所有元素
#查找列表li中的元素,移除每个元素的空格,并找出以‘A’或者‘a’开头,并以‘c’结尾的所有元素, #并添加到一个新列表中,最后循环打印这个列表 li = ['TaiBai ','alexC','AbC','egon',' riTiAn','WuSir ',' aqc',] new_li = [] for i in li: new_i = i.strip() #if new_i.upper().startswith('A') and new_i.endswith('c'): #第一种方法 if new_i[0].upper() == 'A' and new_i[-1] == 'c': #第二种方法 new_li.append(new_i) for i in new_li: print(i) #返回值 aqc
eg3:敏感词语过滤程序
#开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容包含特殊的字符: #敏感词列表 li = ['苍老师','东京热','武藤兰','波多野结衣'] #则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换成***),并添加到一个列表中; #如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。 li = ['苍老师','东京热','武藤兰','波多野结衣'] comment_list = [] comment = input('请输入您的评论:') #fdagadfeaewr苍老师fdaevnk苍老师fdaie武藤兰ewd32波多野结衣fdsfascf for word in li: if word in comment: comment = comment.replace(word,'*'*len(word)) comment_list.append(comment) print(comment_list)
eg4:循环打印嵌套列表中元素
#循环打印列表中的的每个字符串,包含嵌套列表中的字符串 li = ['TaiBai','alexC',['AbC','egon','riTiAn'],'WuSir','aqc',] for i in li: if type(i) == list: for j in i: print(j) print(i)
eg5:将列表中的元素以“_”间隔
#将列表中的元素以“_”间隔 users = ['张三','李四','王五',666,'Tom','周荣',888] s = '' for index in range(len(users)): if index == 0: s = s+users[index] else: s = s+'_'+str(users[index]) print(s) #返回结果:张三_李四_王五_666_Tom_周荣_888
eg6:将字符串变成字典
#将'k1:1|k2:2|k3:3|k4:4|k5:5'变成{k1:1,k2:2,k3:3,k4:4,k5:5} msg = 'k1:1|k2:2|k3:3|k4:4|k5:5' dic = {} cc = msg.split('|') for i in cc: key,value = i.split(':') dic[key] = int(value) print(dic)
(九)集合
1、说明:
集合 set.容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合是无需的。{}
- 集合的作用:
- 列表的去重。
- 关系测试:交集,并集,差集,……
2、创建:
set1 = {1,3,'Tom','Marry',False} print(set1) print({},type({})) #空字典 set2 = set() #空集合 print(set2,type(set2))
3、增
set1 = {1,3,'Tom','Marry',False} set1.add('Jerry') #添加一个元素 print(set1) set1.update('ABCD') #迭代着添加每一个元素 print(set1)
实例运行结果:
{False, 1, 'Jerry', 3, 'Tom', 'Marry'} {False, 1, 'Jerry', 3, 'A', 'Tom', 'Marry', 'C', 'B', 'D'}
4、删
set1 = {1,3,'Tom','Marry',False} set1.remove('Tom') #按名称删除 set1.pop() #随机删除 #set1.clear() #清空集合 #del set1 #删除元素 print(set1)
5、其他操作:
5.1 交集。(& 或 intersection)
set1 = {11,22,33,44,55} set2 = {33,44,55,66,77,88} print(set1 & set2) #{33, 44, 55} print(set1.intersection(set2)) #{33, 44, 55
5.2 并集。 (| 或 union)
set1 = {11,22,33,44,55} set2 = {33,44,55,66,77,88} print(set1 | set2) #{33, 66, 11, 44, 77, 22, 55, 88} print(set1.union(set2)) #{33, 66, 11, 44, 77, 22, 55, 88}
5.3 差集。 (- 或 difference)
set1 = {11,22,33,44,55} set2 = {33,44,55,66,77,88} print(set1 - set2) #{11, 22} print(set1.difference(set2)) #{11, 22}
5.4 反差集。(^ 或 symmetric_difference)
set1 = {11,22,33,44,55} set2 = {33,44,55,66,77,88} print(set1 ^ set2) #{66, 22, 88, 11, 77} print(set1.symmetric_difference(set2)) #{66, 22, 88, 11, 77}
5.5 子集。(< 或 issubset)
set1 = {11,22,33,44,55} set2 = {11,22,33,44,55,66,77,88,99} print(set1 < set2) print(set1.issubset(set2)) #这两个相同,都是说明set1是set2子集。
5.6 超集。(> 或 issuperset)
set1 = {11,22,33,44,55} set2 = {11,22,33,44,55,66,77,88,99} print(set2 > set1) print(set2.issuperset(set1)) ##这两个相同,都是说明set2是set1超集。
eg1 :列表去重
L1 = [1,2,3,2,3,4,4,5,5,11,11,13,13,44,44] #列表去重 L1 = set(L1) print(L1)
来源:https://www.cnblogs.com/lichuanlei/p/12325642.html