一、資料型別
(一)、小技巧
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 = https://www.cnblogs.com/lichuanlei/p/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.uj5u.com/houduan/193115.html
標籤:Python
下一篇:python練習——第4題
