基礎數據類型總結
阿新 • • 發佈:2018-05-01
情況 個數 isdigit rom ever else oob count dig
一、數字類型
一、int
不可變數據類型(可哈希)
數字主要是用於計算用的
二、bool
不可變數據類型(可哈希)
布爾值值分為兩種:True ,False ,就是反應條件的正確與否
真 1 True
假 0 False
int-->str str(int)
str-->int int(str)
int--->bool 0 代表false 非零代表True
str--->bool 非空 為True ,空字符串就是False
bool-->str 無意義 ,很少用到
三、float
不可變數據類型(可哈希)
小數數字運算
四、complex
不可變數據類型(可哈希)
復數運算
二、序列類型
一、str
不可變數據類型(可哈希)
1、索引和切片
#索引與切片 s[起始索引:截止索引:步長] s = ‘老男孩是最好的培訓機構‘ #索引 s1 = s[0] print(s1) # 老 s2 = s[2] print(s2) # 孩 #切片 顧頭不顧腚 s4 = s[0:3] print(s4) # 老男孩 s41 = s[:3] print(s41) # 老男孩 s6 = s[:] #老男孩是最好的培訓機構 print(s6) #步長 s7 = s[:5:2] # 老孩最 print(s7) s8 = s[:7:3] # 老是的 print(s8) # 反向步長 s7 = s[-1:-5:-1] # 構機訓培 print(s7)
2、字符串常用方法
s = ‘laonanHai‘ # 1、*** 首字母大寫,其他字母小寫 s1 = s.capitalize() print(s1) # Laonanhai # 2、***全部大寫,全部小寫 s2 = s.upper() s3 = s.lower() print(s2,s3) # LAONANHAI laonanhaicode = ‘aeQu‘.upper() your_code = input(‘請輸入驗證碼‘).upper() if your_code == code: print(‘驗證碼輸入成功‘) # 3、 * 居中center s4 = s.center(30) print(s4) s4 = s.center(30,‘*‘) print(s4) # 4、**大小寫翻轉 s5 = s.swapcase() print(s5) # LAONANhAI s = ‘alex wusir*laonanhai2taibai‘ # 5、每個單詞的首字母大寫(非字母隔開) s6 =s.title() print(s6) # Alex Wusir*Laonanhai2Taibai s = ‘alexlaonanhai‘ # 6、***判斷以什麽為開頭,以什麽為結尾。 # startswith endswith() s7 = s.startswith(‘a‘) s71 = s.startswith(‘al‘) s72 = s.startswith(‘alex‘) s73 = s.startswith(‘alex‘) s74 = s.startswith(‘l‘, 4) print(s74) # True print(s7,s71,s72,s74) # True True True True s = ‘ laonanhai ‘ s = ‘\nlaonanhai\t‘ # 7、***去除首尾的空格,換行符,tab # 去除左邊的空格,換行符,tab lstrip() # 去除右邊的空格,換行符,tab rstrip() #strip() print(s) print(s.strip()) print(s.lstrip()) print(s.rstrip()) name = input(‘請輸入用戶名:‘).strip() if name == ‘alex‘: print(666) s = ‘,laoxnanhaialexl‘ print(s.strip(‘,lax‘)) # oxnanhaiale s = ‘alexex‘ # 8、*** find index 通過元素找索引 print(s.find(‘e‘)) # 2 print(s.find(‘e‘,3)) # 4(從索引3開始) print(s.find(‘A‘)) # -1 # print(s.index(‘A‘)) #執行報錯 s = ‘alexex‘ # 9、*** count 尋找元素出現的個數 可切片 print(s.count(‘e‘)) # 2 print(s.count(‘ex‘)) # 2 a1=‘ladsfaldfakd000lsd32320‘ ret3 = a1.count("a") # 可切片 print(ret3) # 3 # 10、***replace 替換 s = ‘將發生多了範德薩發範德薩回復‘ s1 = s.replace(‘範德薩‘, ‘小粉嫩‘) print(s1) # 將發生多了小粉嫩發小粉嫩回復 s2 = s.replace(‘範德薩‘, ‘小粉嫩‘,1) print(s2) # 將發生多了小粉嫩發範德薩回復 s3 = s.replace(‘範德薩‘, ‘sb‘) print(s3) # 將發生多了sb發sb回復 # 11、***** split 分割 str ---> list s = ‘alex wusir taibai‘ print(s.split()) # [‘alex‘, ‘wusir‘, ‘taibai‘] s1 = ‘alex,wusir,taibai‘ print(s1.split(‘,‘)) # [‘alex‘, ‘wusir‘, ‘taibai‘] s2 = ‘alexawusirataibai‘ print(s2.split(‘a‘)) # [‘‘, ‘lex‘, ‘wusir‘, ‘t‘, ‘ib‘, ‘i‘] s3 = ‘alexawusirataibai‘ print(s3.split(‘a‘,1)) # 分割次數 [‘‘, ‘lexawusirataibai‘] # 12、***** format 格式化輸出 #三種用法 #第一種用法: s = ‘我叫{},今年{},愛好{}‘.format(‘MT‘,18,‘母牛‘) #第二種用法 s = ‘我叫{0},今年{1},愛好{2},我依然叫{0},今年還是{1}‘ .format(‘MT‘,18,‘母牛‘) #第三種 鍵值對 s = ‘我叫{name},今年{age},愛好{hobby}‘.format(age=18, name=‘MT‘, hobby=‘悶兒‘) name=‘123a‘ # 13、字符串由字母或數字組成,字符串只由字母組成,字符串只由數字組成 print(name.isalnum()) # 字符串由字母或數字組成 True print(name.isalpha()) # 字符串只由字母組成 False print(name.isdigit()) # 字符串只由數字組成 False if name.isdigit(): name = int(name) print(name,type(name)) else: print(‘您輸入的由非數字元素‘) # 14、casefold # 用法:S.casefold() # 意義:lower() 方法只對ASCII編碼,也就是‘A-Z’有效,對於其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用 casefold() 方法 # 用法: s = ‘aBBex ‘ print(s.casefold()) # abbex # 15、expandtabs # 用法:S.expandtabs(tabsoze=8) # 意義:把字符串中的 tab 符號(‘\t‘)轉為空格,tab 符號(‘\t‘)默認的空格數是 8。 # 從頭開始數,數到第一個\t正好為8個空格,不足則補空格,如果還有\t,接著從第一個\t數到第二個\t仍然為8個空格,以此類推直到最後一個\t結束。 # 用法 S = "this is\tstring example....wow!!!" print("原始字符串: " + S) #原始字符串: this is string example....wow!!! print("替換 \\t 符號: " + S.expandtabs()) #替換 \t 符號: this is string example....wow!!! print("使用16個空格替換 \\t 符號: " + S.expandtabs(16)) #使用16個空格替換 \t 符號: this is string example....wow!!!
二、list
可變數據類型(不可哈希)
註:對於list,在循環一個列表時,最好不要進行刪除的動作(一旦刪除,索引會隨之改變),容易出錯。
1、索引、切片、步長
li = [‘alex‘,123,True,(1,23,34,‘wusir‘),[2412,234,‘xiaomin‘],{‘name‘:‘alex‘}] #索引、切片、步長 print(li[0]) # alex print(li[2]) # True print(li[:4]) # [‘alex‘, 123, True, (1, 23, 34, ‘wusir‘)] print(li[3:1:-1]) # [(1, 23, 34, ‘wusir‘), True]
2、增
# 1、append 在列表最後加入元素,結果沒有返回值,直接修改列表 li.append(‘alex‘) print(li) # [1, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘] li.append([1,2,3]) print(li) # [1, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3]] # 2、insert 插入 可以按索引插入 li.insert(2,‘sb‘) print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3]] # 3、extend 叠代添加,到最後 li.extend(‘214‘) print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘] li.extend([1,2,‘ab‘]) print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2, ‘ab‘]
3、刪
li = [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2, ‘ab‘] # 1、remove 按元素刪除 li.remove(‘a‘) print(li) #[1, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2, ‘ab‘] # 2、pop 按索引刪除,默認刪除最後一個,返回值是刪除的元素 print(li.pop()) # ab print(li) #[1, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2] print(li.pop(2)) # b print(li) #[1, ‘sb‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2] # 3、clear 清空列表內容 li.clear() print(li) #[] # 4、del 刪除列表或者切片刪除 li = [1,2,4,6] # del li print(li) # 列表不存在了 li = [1,‘a‘,‘b‘,‘a‘,2,3,‘老男孩‘] # 切片刪除,可以按步長刪除 del li[3:] print(li) # [1, ‘a‘, ‘b‘] li = [1,‘a‘,‘b‘,‘a‘,2,3,‘老男孩‘] del li[:3:2] print(li) # [‘a‘, ‘a‘, 2, 3, ‘老男孩‘]
4、改
# 1、按照索引改 li = [1,‘a‘,‘b‘,‘a‘,2,3,‘老男孩‘] li[0] = ‘abc‘ print(li) # [‘abc‘, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘] li[0] = [‘abc‘,123,‘eta‘] print(li) # [[‘abc‘, 123, ‘eta‘], ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘] # 2、按照切片去改 li[:3] = ‘sb‘ print(li) # [‘s‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘] li[:2] = [‘sb‘] print(li) # [‘sb‘, ‘a‘, 2, 3, ‘老男孩‘]
5、查
li = [‘sb‘, ‘a‘, 2, 3, ‘老男孩‘] # 1、查看,切片步長查看 print(li[0]) # sb print(li[:2]) # [‘sb‘, ‘a‘] print(li[::2]) # [‘sb‘, 2, ‘老男孩‘] # 2、for 循環 for i in li: print(i) # sb # a # 2 # 3
6、其他操作
# 1、sort從小到大,正向排序 li = [23,21,43,1,54] li.sort() print(li) # [1, 21, 23, 43, 54] # 2、從大到小,反向排序 li.sort(reverse =True) print(li) # [54, 43, 23, 21, 1] # 3、翻轉 li.reverse() # [1, 21, 23, 43, 54] # 4、長度 len print(len(li)) # 5 print(li) #[1, 21, 23, 43, 54] # 5、count li = [‘t‘,2342,‘t‘,‘safs‘,‘sadfast‘,‘eawt‘] print(li.count(‘t‘)) # 2 #index 通過元素找索引 print(li.index(‘t‘)) # 0 沒有找到報錯 # 6、join用字符串做一個連接符 #連接可叠代對象中的每一個元素,形成一個新的字符串 s = ‘xxoo‘.join(‘sb‘) print(s) # sxxoob l1 = [‘wusir‘,‘taibai‘] print(‘ ‘.join(l1)) # wusir taibai print(‘‘.join(l1)) # wusirtaibai
三、tuple
不可變數據類型(可哈希)
元組被稱為只讀列表,即數據可以被查詢,但不能被修改,字符串的索引與切片操作同樣適用於元組
註:對於元組:如果只有一個元素,並且沒有逗號,此元素是什麽數據類型,該表達式就是什麽數據類型
tu = ([1,2,3]) tu1 = ([1,2,3],) print(tu,type(tu)) # [1, 2, 3] <class ‘list‘> print(tu1,type(tu1)) # ([1, 2, 3],) <class ‘tuple‘>
三、散列類型
一、dict
可變數據類型(不可哈希)
字典的鍵:不可變數據類型,字典的值:任意數據類型
註:在循環字典中,不能增加或者刪除此字典的鍵值對。
# 將字典中含有k元素的鍵,對應的鍵值對刪除。 dic = {‘k1‘:‘value1‘,‘k2‘:‘value2‘,‘name‘:‘wusir‘} l1 = [] for i in dic: if ‘k‘ in i: l1.append(i) for i in l1: del dic[i] print(dic)
1、增
# 1、有則覆蓋,無則添加 dic[‘hobby‘] = "girl" print(dic) #{‘name‘: ‘jin‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘} dic["name"] = ‘alex‘ print(dic) #{‘name‘: ‘alex‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘} # 2、setfault添加一個鍵值對,有則不變,無則添加。 dic.setdefault(‘name‘,‘sb‘) print(dic) #{‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘alex‘, ‘hobby‘: ‘girl‘} dic.setdefault(‘sb‘,‘sb‘) print(dic) #{‘sb‘: ‘sb‘, ‘age‘: 18, ‘hobby‘: ‘girl‘, ‘name‘: ‘alex‘, ‘sex‘: ‘male‘} # 3、fromkeys() 函數用於創建一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值 dict.fromkeys(seq[, value])) dic = dict.fromkeys(‘abc‘,‘alex‘) print(dic) #{‘c‘: ‘alex‘, ‘a‘: ‘alex‘, ‘b‘: ‘alex‘} dic = dict.fromkeys([1,2,3],[]) print(dic) #{1: [], 2: [], 3: []} dic[1].append(‘laonanhai‘) print(dic) #{1: [‘laonanhai‘], 2: [‘laonanhai‘], 3: [‘laonanhai‘]}
2、刪
dic = {‘sb‘: ‘sb‘, ‘age‘: 18, ‘hobby‘:‘girl‘, ‘name‘: ‘alex‘, ‘sex‘: ‘male‘} # 1、pop 有返回值的刪除 print(dic.pop(‘sb‘)) # sb print(dic) # {‘name‘: ‘alex‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘} print(dic.pop(‘hobby‘)) # girl print(dic) # {‘sex‘: ‘male‘, ‘name‘: ‘alex‘, ‘age‘: 18} print(dic.pop(‘a‘,‘沒有值‘)) # 如果刪除內容不存在後面可以加個返回值結果是沒有值 print(dic) # {‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘alex‘} print(dic.pop(‘age‘,65)) # 有要刪除內容,返回刪除內容 18 print(dic) # {‘sex‘: ‘male‘, ‘name‘: ‘alex‘} # 2、clear 清空 dic.clear() print(dic) # {} # 3、del 刪除列表,按鍵值刪除鍵值對 # del dic # 刪除字典 # print(dic) # 報錯,字典不存在了 dic = {"name":"jin", "age":18, "sex":"male", } del dic[‘name‘] print(dic) # {‘sex‘: ‘male‘, ‘age‘: 18} print(dic.popitem()) # 隨機刪除,有返回值,返回的是刪的內容 (‘sex‘, ‘male‘) print(dic) # {‘age‘: 18}
3、改
# 1、直接修改 dic = {"name":"jin", "age":18, "sex":"male", } dic[‘name‘] = ‘sb‘ print(dic) # {‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘sb‘} # 2、兩個字典的改 dic = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic2.update(dic) # 對dic2進行升級,把dic內容覆蓋到dic2中 print(dic2) # {‘weight‘: 75, ‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘jin‘} print(dic) # {‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘jin‘}
4、查
# 1、直接查找,如果不存在會報錯,推薦用get查找 dic = {‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘jin‘} print(dic["name"]) # jin # print(dic[‘sb‘]) # 報錯 print(dic.get(‘name‘)) # jin print(dic.get(‘sb‘)) # None 默認返回None print(dic.get(‘sb‘,‘123344sdafasd‘)) # 123344sdafasd 可以後面定義返回值
5、其他操作
# key() values() items() dic = {‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘jin‘} print(dic.keys(),type(dic.keys())) #dict_keys([‘sex‘, ‘name‘, ‘age‘]) <class ‘dict_keys‘> # 把鍵放在了一個類似列表的容器中,可循環,可轉化為列表 for i in dic.keys(): print(i) # name # sex # age # 把鍵值放在了一個類似列表的容器中,可循環,可轉化為列表 for i in dic.values(): print(i) # 18 # jin # male # 把鍵值對放在了一個類似列表的容器中,可循環,可轉化為列表 for i in dic.items(): print(i) # (‘age‘, 18) # (‘name‘, ‘jin‘) # (‘sex‘, ‘male‘) # 特殊類型 dict 轉化成list print(list(dic.keys())) #[‘sex‘, ‘age‘, ‘name‘]
二、set
不重復,無序,它裏面的元素是可哈希的。他本身是不可哈希的,他不能作為字典的key。
作用:1,去重。
2,數據關系的測試。
# 1、去重 li = [11,11,22,22,33,33,33,44] li = list(set(li)) print(li) #[33, 11, 44, 22] set = {11,22,33,11,22,33,44} print(set) #{33, 11, 44, 22} # 2、增 set1 = {‘alex‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘} set1.add(‘sb‘) print(set1) #{‘sb‘, ‘barry‘, ‘egon‘, ‘ritian‘, ‘wusir‘, ‘alex‘} set1.update(‘abc‘) set1.update([1,2,3]) #叠代的增加 print(set1) #{‘sb‘, 1, 2, 3, ‘barry‘, ‘egon‘, ‘ritian‘, ‘a‘, ‘b‘, ‘wusir‘, ‘alex‘, ‘c‘} # 3、刪 set1.remove(‘sb‘) print(set1) #{‘c‘, 1, 2, ‘ritian‘, ‘wusir‘, 3, ‘barry‘, ‘b‘, ‘a‘, ‘alex‘, ‘egon‘} set1.clear() print(set1) #set() del set1 # print(set1) #刪除了 set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} # 4、交集 & intersection print(set1 & set2) #{4, 5} print(set1.intersection(set2)) #{4, 5} # 5、反交集 ^ symmetric_difference print(set1^set2) #{1, 2, 3, 6, 7, 8} print(set.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8} # 6、差集 | union print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8} print(set1.union(set2)) #{1, 2, 3, 4, 5, 6, 7, 8} set1 = {1,2,3} set2 = {1,2,3,4,5,6} print(set1.issubset(set2)) # True 子集 print(set2.issuperset(set1)) # True set2 是set1的超集 set1 = {‘barry‘,"wusir"} set2 = frozenset(set1) # 把集合變成可哈希的,有序集合 print(set2,type(set2)) # frozenset({‘barry‘, ‘wusir‘}) <class ‘frozenset‘>
python基礎數據類型思維導圖:https://www.processon.com/view/link/5ae735c0e4b039625af92020
基礎數據類型總結