數據類型相關總結
數據類型相關總結
一、數據類型
- 數字
- 字符串
- 列表
- 元組
- 字典
- 集合
二、基礎數據類型
- 數字 int
int:數字,如1,2,4,…用於加減乘除等計算
- 布爾值bool
真 1 True
假 0 False
註意:True、False首字母必須大寫
- 字符串 str
3.1 索引與切片
l 索引:下標,就是初始索引為0。
如: a = ‘abcdef’
該字符串的下標為 012345
print(a[0]),輸出:a
l 切片:通過索引(索引:索引:步長)截取字符串的一段,形成新的字符串,註意:切片 顧頭不顧尾,即不能取到最後一個索引的值,只能取到最後一個索引前的值。
切片:字符串變量[起始索引:結束索引+1:步長]
a = ‘abcdef’
print(a[0:3]),輸出:abc
print(a[2:5]),輸出:cde
print(a[0:]),輸出:abcdef ------- 默認到最後一個
print(a[:3]),輸出:abc ----- 默認從第一個開始
print(a[0:-1]),輸出abcdef ----- -1就是最後一個
print(a[0:5:2]),輸出 ace ------ 加步長
print(a[5:0:-2]),輸出 ec ---- 反向加步長
3.2 字符串常用方法
(1) captalize(重點**) ----- 首字母大寫,其余字母小寫
s = "abcde"
s1 = s.capitalize()
print(s1)
#結果:Abcde
(2) swapcase -----大小寫翻轉
s = "ABcde"
s1 = s. swapcase()
print(s1)
#結果:abCDE
(3) title -----非字母隔開的每個單詞的首字母大寫
s = ‘alex wusir*taibai2ritian‘
s3 = s.title()
print(s3)
結果:Alex Wusir*Taibai2Ritian
(4) center----設置總長度,並居中(重點*)
s = "abcde"
s4 = s.center(30,) 結果:abcde
s4 = s.center(30,‘*‘) 結果:************abcde*************
print s4
(5) 轉換字母大小寫
*** upper() ---將全部小寫字母轉換成大寫
lower() ---將全部大寫字母轉換成小寫
s = ‘alexWUsir‘
s5 = s.upper()
print(s5) #----結果:ALEXWUSIR
s6 = s.lower()
print(s6)
例:用戶輸入驗證碼,程序中的驗證碼為大寫,用戶可能輸入大寫,也可能輸入小寫,需將全部小寫轉換成大寫,使用戶輸入的驗證碼通過程序驗證
code = ‘AwEqr‘
username= input(‘請輸入用戶名:‘)
your_code = input(‘請輸入驗證碼:‘)
if username == ‘alex‘ and your_code.upper() == code.upper():
print(‘驗證成功‘)
(6) ***驗證字符串開頭和結尾的字符
startswith ---驗證從左到右的字母是否為 某某的字母,返回 布爾值
endswith ---驗證從右到左的字母是否為 某某的字母,返回 布爾值
s = ‘alexWUsir‘
s6 = s.startswith(‘a‘)
s7 = s.startswith(‘alex‘)
s8= s.startswith(‘WS‘, 4,) #前面四個字母是否為WS
print(s6) #結果:True
print(s7) #結果:True
print(s8) #結果:False
s9 = s.endswith(‘r‘)
s10 = s.endswith(‘sir‘)
s11 = s.endswith(‘ir‘,2) #最後兩個字母是否為ir
print(s9) #結果:True
print(s10) #結果:True
print(s11) #結果:True
(7) *** strip 默認去除字符串前後的空格,換行符,制表符
# 去除的元素可自定制。
#lstrip() ---去除左面的空格,換行符,制表符
## rstrip() ---去除右面的空格,換行符,制表符
#s = ‘ alexWUsir\t‘
# s7 = s.strip()
# print(s7)
# ss = ‘abclaonanhaiq‘
# ss1 = ss.strip(‘abqc‘)
# print(ss1)
username = input(‘>>>‘).strip()
password = input(‘>>>‘).strip()
if username == ‘老男孩‘ and password == ‘123‘:
print(‘登錄成功‘)
(8) *** replace 替換
#字符串s.replace(str1,str2,n)
# str1 -- 需要替換的原字符串s中的字符
# str2 -- 要替換成的字符串
# n -- 替換的個數
s = ‘Liuliuli‘
s1 = s.replace(‘l‘,‘99‘)
print(s1)
#結果:Liu99iu99i
s2 = s.replace(‘i‘,‘00‘,2)
print(s2)
#結果:L00ul00uli
(9) ***split 分隔,str ---> list,將字符串分隔為列表
s1 = ‘alex wusir taibai ritian‘
l1 = s1.split() # 默認以空格分隔
print(l1)
結果:[‘alex‘, ‘wusir‘, ‘taibai‘, ‘ritian‘]
s2 = ‘alex,wusir,taibai,ritian‘
l2 = s2.split(‘,‘)
print(l2)
結果:[‘alex‘, ‘wusir‘, ‘taibai‘, ‘ritian‘]
l3 = s3.split(‘a‘,2)
s3 = ‘alexwusirtaibairitian‘
結果:[‘‘, ‘lexwusirt‘, ‘ibairitian‘]
print(l3)
s4 = ‘liuliuliuliuliuliu‘
l4 = s4.split(‘l‘,-1)
print(l4)
結果:[‘‘, ‘iu‘, ‘iu‘, ‘iu‘, ‘iu‘, ‘iu‘, ‘iu‘]
(10) ***find index 通過元素找索引
find 找不到返回-1
index找不到會報錯
s = ‘劉麗tests01‘
s11 = s.find(‘t‘)
s12 = s.find(‘劉‘)
print(s11,type(s11))
結果:2 <class ‘int‘>
print(s12,type(s12))
結果:0 <class ‘int‘>
s11 = s.find(‘s‘,1)
print(s11)
結果:4
print(s.find(‘A‘))
結果:-1
print(s.index(‘A‘))
結果:報錯
(11) format
# s = "我叫{},今年{},愛好{}"
#第一種用法
# s12 = s.format(‘太白‘, ‘25‘, ‘女‘)
# print(s12)
#第二種用法
# s1 = "我叫{0},今年{1},愛好{2},我依然叫{0}"
# s13 = s1.format(‘太白‘, ‘25‘, ‘女‘)
# print(s13)
#第三種用法
# s3 = "我叫{name},今年{age},愛好{hobby}"
# s14 = s3.format(age=25,hobby=‘girl‘,name=‘太白‘)
# print(s14)
(12) 公共方法
#len 測量個數
# print(len(s))
# #count 計算某一字符在字符串中的個數
# print(s.count(‘a‘))
# name = ‘123‘
# print(name.isalnum()) #字符串由字母或數字組成
# print(name.isalpha()) #字符串只由字母組成
# print(name.isdigit()) #字符串只由數字組成
str ---> int 字符串全部由數字組成 int(‘123‘)
int ---> str str(1)
int ---> bool 0---> False 非0 ---> True bool(1)
# print(bool(100))
# print(bool(-1))
# print(bool(0))
bool --> int True 1 False 0
print(int(True))
print(int(False))
str ---> bool 非空 True 空字符串 False
print(bool(‘‘))
print(bool(‘fdsaf‘))
bool ---> str
# print(str(True),type(str(True)))
str ---> list split
list --> str join
3.3 格式化輸出、運算符
(1) 格式化輸出 % 占位符 s d
name = input(‘請輸入名字:‘)
age = input(‘請輸入年齡:‘)
job = input(‘請輸入職業:‘)
hobbie = input(‘請輸入愛好:‘)
msg = ‘‘‘------------ info of %s -----------
Name : %s
Age : %d
job : %s
Hobbie: %s
------------- end -----------------
‘‘‘ % (name,name, int(age), job, hobbie)
print(msg)
print(‘我叫%s,今年%d,學習進度2%%‘ % (‘老男孩‘, 10000))
結果:
(2) 運算符
#and or not
# 1,前後都是比較運算
# 優先級:() > not > and > or
# print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)
# 結果:False
# 2, 前後都是數值
‘‘‘
or ---0 是False 非0 都是True
x or y if x is True,return x
and --- 0 是False 非0 都是True
x or y if x is True,return y
‘‘‘
# print(3 or 4)
# 結果:3
# print(1 or 4)
# 結果:1
# print(0 or 4)
# 結果:4
# print(-1 or 4)
# 結果:-1
# print(3 and 5)
# 結果:5
# print(3 and 0)
# 結果:0
# print(0 or 4 and 5)
# 結果:5
3.4 列表
(1) 列表取值
# 按照索引取值,與元素本身的數據類型一致
# 按照切片取值,取出來的是小列表。
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
l1 = ll[:3]
print(l1)
# 結果:[123, ‘test‘, ‘liuli‘]
print(ll[0],type(ll[0]))
# 結果:123 <class ‘int‘>
l2 = ll[:]#全部列表
print(l2)
# 結果:[123, ‘test‘, ‘liuli‘, ‘badl‘, ‘測試‘, ‘¥%%45‘]
(2) 增加
追加 append()
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
ll.append(‘123‘)
print(ll)
#結果:[123, ‘test‘, ‘liuli‘, ‘badl‘, ‘測試‘, ‘¥%%45‘, ‘123‘]
插入 insert()
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
ll.insert(2,2002)#在指定位置插入元素
print(ll)
#結果:[123, ‘test‘, 2002, ‘liuli‘, ‘badl‘, ‘測試‘, ‘¥%%45‘]
extend 按最小單位在列表中添加元素
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
ll.extend(‘test‘)
print(ll)
#結果:[123, ‘test‘, ‘liuli‘, ‘badl‘, ‘測試‘, ‘¥%%45‘, ‘t‘, ‘e‘,
‘s‘, ‘t‘]
(3) 刪除
pop 按照索引刪除元素
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
l02 = ll.pop(1)
print(ll)
# 結果:[123, ‘liuli‘,
‘badl‘, ‘測試‘, ‘¥%%45‘]
按照元素去刪除 remove
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
ll.remove(‘¥%%45‘)
print(ll)
# 結果:[123, ‘test‘, ‘liuli‘, ‘badl‘, ‘測試‘]
#clear 清空列表
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
ll.clear()
print(ll)
# 結果:[]
del
刪除列表
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
del ll # 刪除列表
print(ll)
結果:報錯,無該列表
# 按照索引刪除列表元素
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
del ll[1]
print(ll)
# 結果:[123, ‘liuli‘, ‘badl‘, ‘測試‘, ‘¥%%45‘]
# 可以按照切片去刪除列表元素
ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘]
del ll[:3]
print(ll)
# 結果:[‘badl‘, ‘測試‘, ‘¥%%45‘]
# 查
#按照索引,切片(步長)
#for 循環遍歷。
# ll = [123,‘test‘,‘liuli‘,‘badl‘,‘測試‘,‘¥%%45‘,‘9999‘]
# for i in ll:
# print(i)
# # 結果:
# 123
# test
# liuli
# badl
# 測試
# ¥%%45
# 9999
# 其他方法
# print(len(l)) # 總個數
# print(l.count(‘WuSir‘)) # 某個元素出現的次數
# l1 = [1, 9, 8, 4, 3, 2, 6,]
# l1.sort() # 正序排序
# 結果:
# 123
# test
# liuli
# badl
# 測試
# ¥%%45
# 9999
# l1 = [1, 9, 8, 4, 3, 2, 6,]
# # print(l1)
# # l1.sort(reverse=True) # 倒敘排序
# # print(l1)
# # 結果:[9, 8, 6, 4, 3, 2, 1]
# l1.reverse() # 翻轉
# print(l1)
# 結果:[6, 2, 3, 4, 8, 9, 1]
3.5 列表的嵌套
l1 = [1, 2, ‘alex‘, [‘WuSir‘, ‘taibai‘, 99], 6]
1,將alex該成Alex
l1[2] = l1[2].capitalize()
print(l1)
結果:[1, 2, ‘Alex‘, [‘WuSir‘, ‘taibai‘, 99], 6]
2,將‘WuSir‘變成全部大寫。
l1[3][0] = l1[3][0].upper()
print(l1)
結果:[1, 2, ‘alex‘, [‘WUSIR‘, ‘taibai‘, 99], 6]
# 3,99讓其通過數字加1的方式變成 ‘100‘.
l1[3][-1] = str(l1[3][-1] + 1)
print(l1[3][-1])
結果:100
3.6
元組
只讀列表。
# tu = (1, 2, 33, ‘alex‘)
# print(tu[1])
# print(tu[:-1])
# for i in tu:
# print(i)
# tu1 = (1, 2, [1, 3,], 4)
# tu1.append(666)
# print(tu1)
#range:指定範圍,生成指定數字。顧頭不顧尾
# print(range(10))
# for i in range(10):
# print(i)
# # 結果:
# range(0, 10)
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# for i in range(1,11):
# print(i)
# 結果:
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 即輸出1-100以內的偶數
# for i in range(2, 101, 2):#從2到101,步長為2,
# print(i)
# 倒序輸出1-100整數
# for i in range(100,0,-1):
# print(i)
# 輸出列表的索引值
# l1 = [1, 2, 3, 4, 5, ‘alex‘]
# for i in range(len(l1)):
# print(i)
# 結果:
# 0
# 1
# 2
# 3
# 4
# 5
3.7 字典的增刪改查
dic = {
‘name‘: ‘liuli‘,
‘age‘: 18,
‘sex‘: ‘女‘,
}
# 增
# dic[‘hobby‘] = ‘test‘ # 無責增加,有則修改。
# dic[‘name‘] = ‘liuli03‘
# print(dic)
# 結果:{‘name‘: ‘liuli03‘, ‘age‘: 18, ‘sex‘: ‘女‘, ‘hobby‘: ‘test‘}
# dic.setdefault(‘name‘,‘liuli‘) # 有key則不修改,無則添加。
# dic.setdefault(‘high‘, 169)
# dic.setdefault(‘age‘, ‘25‘)
# print(dic)
# 結果:{‘name‘: ‘liuli‘, ‘age‘: 18, ‘sex‘: ‘女‘, ‘high‘: 169}
# 刪
# print(dic.pop(‘name‘)) # 有返回值
# dic.pop(‘age‘,None)
# print(dic)
#popitem 隨機刪除 有返回值(python3.6均刪除最後一個)
# print(dic.popitem())
# print(dic)
#clear
# dic.clear()
# print(dic)
# 1.刪除整個字典
# del dic
# print(dic)
# 2.按照鍵去刪除鍵值對
# del dic[‘name‘]
# print(dic)
# 改
# dic[‘name‘] = ‘liuli00‘ # 無則增加,有則修改。
# print(dic)
# dic = {"name": "liuli", "age": 18,"sex": "male"}
# dic2 = {"name": "test", "weight": 75}
# dic2.update(dic) # 將dic裏面的鍵值對覆蓋並更新到dic2中,dic不變 。
# print(dic) # {‘name‘: ‘liuli‘, ‘age‘: 18, ‘sex‘: ‘male‘}
# print(dic2) # {‘name‘: ‘liuli‘, ‘weight‘: 75, ‘age‘: 18, ‘sex‘: ‘male‘}
# 查
# print(dic[‘name‘])
# print(dic[‘name1‘])
# print(dic.get(‘name‘))
# print(dic.get(‘name1‘,‘沒有此鍵...‘)) #查詢key值為name1的value,如沒有該key,則輸出‘沒有此鍵...‘
# print(dic.keys()) # 類似於列表的一個容器,沒有索引
# for i in dic.keys():
# print(i)
# for i in dic:
# print(i)
# print(dic.values())
# print(dic.items())
# for i in dic.items():
# print(i)
#
# 分別賦值
# a, b = 1 ,3
# a, b = [22, 33]
# print(a,b)
# for k, v in dic.items():
# print(k, v)
# dic = {‘name_list‘:[‘高猛‘, ‘於其‘,],
# 1:{
# ‘alex‘: ‘李傑‘,
# ‘high‘: ‘175‘,
# }
# }
# [‘高猛‘, ‘於其‘,] 追加一個元素‘wusir‘
# print(dic)
# dic[‘name_list‘].append(‘wusir‘)
# print(dic)
# 2, {‘alex‘: ‘李傑‘,‘high‘: ‘175‘ } 增加一個鍵值對 ‘sex‘: man,
# print(dic[1])
# dic[1][‘sex‘]=‘man‘
# print(dic[1])
# l1 = [11, 22, 33, 44, 55]
# 將索引為奇數對應的元素刪除。
# del l1[1::2]
# print(l1)
# 在循環一個列表時,不要改變列表的大小,這樣會影響結果。
# 錯誤代碼:
# for i in range(len(l1)):
# # print(i)
# # print(l1)
# if i % 2 == 1:
# del l1[i] #刪除列表中的元素後,索引會發生變化
# print(i)
# # print(l1)
# print(l1)
# 結果:[11, 33, 44]
# 正確代碼:
# for i in range(len(l1)-1,-1,-1):
# print(i)
# if i % 2 == 1:
# del l1[i]
# print(l1)
# print(l1)
# 結果:
# 4
# 3
# [11, 22, 33, 55]
# 2
# 1
# [11, 33, 55]
# 0
# [11, 33, 55]
# dictionary changed size during iteration
# 再循環一個字典時,不要改變字典的大小,這樣會影響結果。
dic = {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘, ‘k3‘:‘v3‘, ‘name‘:‘alex‘}
# 錯誤代碼:
# for k in dic:
# if ‘k‘ in k:
# dic.pop(k)
# print(dic)
# s1 = ‘abc‘
# print(‘a‘ in s1)
# 結果:True
# l1 = []
# for i in dic:
# if ‘k‘ in i:
# l1.append(i)
# print(l1)
# for i in l1:
# print(i)
# del dic[i]
# print(dic)
# 一次增加多個鍵值對
# dic = dict.fromkeys(‘abc‘,666)
# print(dic)
# 結果:{‘a‘: 666, ‘b‘: 666, ‘c‘: 666}
# 該方法下增加的鍵值對如修改一個,即其他的也一起被修改
# dic = dict.fromkeys(‘abc‘,[])
# dic[‘a‘].append(666)
# print(dic)
# 結果:{‘a‘: [666], ‘b‘: [666], ‘c‘: [666]}
數據類型相關總結