數據類型:int,bool,str,list, tuple元組,dict字典。
1.數字:12,3,4
在使用print打印數字時,在終端界面中無法判斷出打印的是什么類型,當我們需要知道一個值是什么類型的時候,此時可以使用tpye()。
1 #-*- encoding -*- 2 3 print(100, type(100)) #100, <class, int> 4 print('100', type('100')) #100, <class. str>
2.字符串:str,python凡是由引號引起來的都是字符串,三個引號引起來的內容賦值給一個變量,則是一個大字符串。字符串與字符串可相加(字符串拼接),字符串可與數字相乘。主要用來存儲少量數據,進行操作。
1 #-*- encoding:utf-8 -*- 2 3 print('I\'m a teacher') #字符串中包含引號加\ 4 5 print("I'm a teacher") #字符串中包含引號,外面是雙引號
2.1 字符串索引與切片
1 s = 'ABCDLSESRF' 2 # 索引 3 s1 = s[0] 4 print(s1) # A 5 # 取ABCD 切片取:顧頭不顧尾 6 s2 = s[0:4] 7 print(s2) 8 # 取F 9 s3 = s[-1] 10 print(s3) 11 # 取A到F 12 s4 = s[0:] # == s4 = s[:] 13 print(s4) 14 15 s = 'ABCDLSESRF' 16 # 只取ACL s[首:尾:步長] 步長默認是1 17 s5 = s[0:5:2] # 最后一個2表示步長,從0開始隔1個取一個字符。如果沒有最后一個步長,默認是1 18 print(s5) 19 # 取DCBA 20 s6 = s[3::-1] 21 print(s6) 22 # 取DB 23 s7 = s[3::-2] 24 print(s7) 25 # 倒着取完 26 s8 = s[-1::-1] # == s8 = s[::-1] 27 print(s8)
2.2 字符串的操作
按照需求對字符串進行操作

1 # 字符串的操作 2 s = 'alexWUsir' 3 # 首字母大寫,其余大小 4 s1 = s.capitalize() 5 print(s1) 6 7 # 全部變為大寫 8 s2 = s.upper() 9 print(s2) 10 11 # 全部變為小寫 12 s3 = s.lower() 13 print(s3) 14 15 # 像在輸入驗證碼的時候,常常提示不區分大小寫,此時這些字符串操作方法就能滿足需求 16 17 # 大寫變小寫,小寫變大寫 18 s4 = s.swapcase() 19 print(s4) 20 21 s = 'alex egon*wusir' 22 23 # 讓每個特殊字符(或數字)隔開的字符串首字符大寫 24 s5 = s.title() # 會將字符串內容中的被特殊字符隔開的每個字符串的首字母變為大寫 25 print(s5) 26 27 s = 'alexWUsir' 28 29 # 加入寬度后,空隔填充,進行居中 30 s5 = s.center(20) 31 print(s5) 32 33 # 加入寬度后,在加入填充的字符,進行居中 34 s6 = s.center(20, '#') 35 print(s6) 36 37 s = 'al\tsir' 38 # 當出現\t時,包括前面,不夠參數長度的補上參數長度 39 s7 = s.expandtabs(4) 40 print(s7) # al sir 41 42 # 公共方法,長度 43 s = 'alexWUsir' 44 l = len(s) 45 print(l)
2.2 字符串中的方法
1 # 判斷一個字符串以什么為開頭,是返回True 2 s = 'alexWUsir' 3 s8 = s.startswith('al') 4 print(s8) # True 5 6 # 判斷字符串的第二位到最后是否以e開頭 7 s9 = s.startswith('e', 2) 8 print(s9) # True 9 10 # 判斷字符串的第二位到第四位是否以e開頭 11 s10 = s.startswith('e', 2, 5) 12 print(s10) # True 13 14 # 查找字符串中有沒有L這個元素 15 s = 'alexWUsir' 16 s11 = s.find('W') # 返回這個元素對應的索引 17 print(s11) # 4 18 19 # 查找字符串的第二位到第四位有沒有W這個元素 20 s = 'alexWUsir' 21 s12 = s.find('W', 2, 5) 22 print(s12) # 4 23 24 # 查找字符串的第二位到第四位有沒有A這個元素 25 s = 'alexWUsir' 26 s13 = s.find('A', 2, 5) 27 print(s13) # 找不到返回-1 28 29 # 通過元素找索引,這種方法找不到會報錯 30 # s14 = s.index('A') 31 # print(s14) 32 33 # 去除一個字符串的前后空格 34 s = ' alexWUsir ' 35 s15 = s.strip() # 默認刪除前后空格 36 print(s15) # alexWUsir 37 38 # 去除一個字符串中的% 39 s = 'alexWUsir%' 40 s16 = s.strip('%') 41 print(s16) # alexWUsir 42 43 # 去除字符串中的*% 44 s = '*alexWUsir%' 45 s17 = s.strip('*%') 46 print(s17) # alexWUsir 47 48 # 去除字符串中的*% 49 s = '*a%lexWUsir%' 50 s18 = s.strip('*%') 51 print(s18) # a%lexWUsir 52 53 # rstrip 從右刪 54 # lstrip 從左刪 55 56 # 字符出現個數 57 s = 'alexaa wusirl' 58 s19 = s.count('a') 59 print(s19) # 3 60 61 # split 將字符串按照規定的分割。一份為2,作為分割的字符消失。同時也是str轉list 62 s = 'alex wusir why' 63 l = s.split() # 默認以空格分割 64 print(l) # ['alex', 'wusir', 'why'] 65 66 s = ':alex:wusir:why' 67 l1 = s.split(':') # 以:分割 68 print(l1) # ['', 'alex', 'wusir', 'why'] 69 70 # format的格式化輸出.三種玩法,高大上的 71 # format第一種 72 s = '我叫{}, 今年{}, 愛好{}'.format('why', 25, 'python') 73 print(s) # 我叫why, 今年25, 愛好python 74 75 # format第二種 76 s = '我叫{0}, 今年{1}, 愛好{2}, 我是{0}'.format('why', 25, 'python') 77 print(s) # 我叫why, 今年25, 愛好python, 我是why 78 79 # format第三種 80 s = '我叫{name}, 今年{age}, 愛好{hobby}, 我是{name}'.format(name = 'why', age = 25, hobby = 'python') 81 print(s) # 我叫why, 今年25, 愛好python, 我是why 82 83 # 替換 84 s = '老李,老王,老將, 老李' 85 s20 = s.replace('老李', '老大') 86 print(s20) # 老大,老王,老將, 老大 87 88 s = '老李,老王,老將, 老李' 89 s21 = s.replace('老李', '老大', 1) 90 print(s21) # 老大,老王,老將, 老李 91 92 name = 'whylinux123' 93 print(name.isalnum()) # 字符串是否由字母或數字組成 94 print(name.isalpha()) # 字符串是否只由字母組成 95 print(name.isdigit()) # 字符串是否只由數字組成 96 97 # 以上操作對原字符串沒有影響,都是新生成了一個字符串
2.3 補充
2.3.1 判斷一個字符串中是否含有非法字符,或不含非法字符
1 s = 'fds蒼進空adf' 2 3 if '蒼井空' in s: 4 print('您的評論存在敏感詞匯') 5 s = 'fsdfsdz' 6 if '蒼井空' not in s: 7 print('沒有非法字符')
3.bool:布爾值,Flase,True。
沒有什么方法,說下數據類型轉換。如果將int類型的轉換為str,則只需str()將int類型的數字或變量包起來即可,沒有要求。如果將str類型的轉換為int類型,只需將int()將str類型的字符串或變量包含起來即可,但是有要求,字符串只能是數字字符。
數字轉換為bool值
1 i = 10 2 j = 0 3 print(bool(i)) # True 4 print(bool(j)) # False
bool值轉換為數字
1 i = 10 2 j = 0 3 print(bool(i)) # True 4 print(bool(j)) # False
字符串與bool值
1 s ='' 2 print(bool(s)) #False 3 s = '0' 4 print(bool(s)) #True
1 s = '' 2 if s: 3 pass 4 else: 5 print('空的') #
4.int
可以在PyCharm中,輸入int后,點擊Ctrl+鼠標左鍵,可以跳到class中看有哪些操作方法,這里只記住一個就行,其他有需要了解看class或百度。
bit_length(),將int類型的數據轉換為二進制,然后返回該數字占用二進制最少的bit位數。
1 # bit_length()方法,將int類型的數據 2 # 轉換為二進制用的最少位數 3 # 數字3 0000 0011 所以是2 4 # 數字5 0000 0101 所以是3 5 # 數字1 0000 0001 所以是1 6 i = 3 7 print(i.bit_length()) #3
5.list
列表,可以存儲大量的數據。從數據庫取出數據,如果需進行處理,可以從數據庫將數據取出到list列表中
其他語言中也有類似於列表的數據類型,如js中的數組,他是以[]括起來的,每個元素以逗號隔開,而且他里面可以存放各種數據類型的元素,比如:
li = ['alex', 123, True, (1, 2, 3, 4), [1, 2, 3, '小明'], {'name' : 'alex'}] 對象也同樣可以放入
列表相對於字符串,不僅可以存儲不同的數據類型,而且可以存儲大量的數據,列表是有序的,有索引值,可切片。有序就證明有索引值,有切片。

1 li = ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'why'] 2 3 print(li[0]) # alex 4 print(li[1]) # [1, 2, 3] 5 print(li[0:3]) # ['alex', [1, 2, 3], 'wusir'] 6 7 # 列表的其他操作切片等與字符串一樣,因為是有序的,所以有索引值,所以可以切片
5.1 列表的操作方法

1 li = ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'why'] 2 3 # 增加 append 4 li.append('xx') 5 print(li) # ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'why', 'xx'] 6 7 li.append(1) 8 print(li) # ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'why', 'xx', 1] 9 10 # 增加insert 按照索引位置插入增加 11 li.insert(5, 'yy') 12 print(li) # ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'yy', 'why', 'xx', 1] 13 14 # 迭代的增加,迭代:由多個元素組成的對象是可迭代的。增加的是可迭代對象的每個元素,加入到最后 15 li.extend('qq') 16 print(li) # ['alex', [1, 2, 3], 'wusir', 'egon', '女神', 'yy', 'why', 'xx', 1, 'q', 'q'] 17 18 li = ['alex', 'wusir', 'egon', '女神', 'why'] 19 20 # 刪 pop,類似出棧概念,返回出棧者 21 li.pop() # 按索引去刪除,默認彈出最后一個 22 print(li) 23 24 # 刪 remove, 按元素去刪,沒有返回值 25 li.remove('alex') # ['wusir', 'egon', '女神'] 26 print(li) 27 28 # 清空列表 29 li.clear() 30 print(li) # [] 31 32 # 在內存中將列表刪除 33 del li 34 # print(li) # 報錯,li沒有定義 35 36 37 li = ['alex', 'wusir', 'egon', '女神', 'why'] 38 39 # 切片去刪,刪除一片 40 del li[0:3] 41 print(li) # ['女神', 'why'] 42 43 44 # 改, 按照索引去改 45 li[1] = '男神' 46 print(li) # ['女神', '男神'] 47 48 li = ['alex', 'wusir', 'egon', '女神', 'why'] 49 # 改, 切片去改,切片去改,只能使用可迭代的對象作為賦值的對象 50 li[0:2] = 'python' # 前兩位去除后,位置變空,填充賦值的對象的迭代元素 51 print(li) # ['p', 'y', 't', 'h', 'o', 'n', 'egon', '女神', 'why'] 52 53 li = ['alex', 'wusir', 'egon', '女神', 'why'] 54 li[0:2] = [1, 2, 4, 'xxx'] # 前兩位去除后,位置變空,填充賦值的對象的迭代元素 55 print(li) # [1, 2, 4, 'xxx', 'egon', '女神', 'why'] 56 57 li = ['alex', 'wusir', 'egon', '女神', 'why'] 58 # li[0:2] = 12 # 報錯 12不可迭代 59 # print(li) 60 61 # 查 查列表中的每一個元素 62 for i in li: 63 print(i) 64 65 # 查 切片查 66 print(li[0:2]) # ['alex', 'wusir'] 67 68 # 公共方法, len 計算可迭代對象中的含幾個元素 69 print(len(li)) # 5 70 71 # 公共方法,count 計算元素的出現次數 72 print(li.count('alex')) 73 74 # 找列表中的元素的索引值, index 找不到會報錯 75 print(li.index('why')) # 4 76 77 li = [1, 5, 4, 7, 6, 2, 3, 9, 0] 78 # 列表元素正向排序 sort, 從小到大排序 79 li.sort() 80 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 9] 81 82 # 列表元素反向排序 sort(reverse=True) 83 li.sort(reverse=True) 84 print(li) # [9, 7, 6, 5, 4, 3, 2, 1, 0] 85 86 # 列表元素順序反轉 87 li.reverse() 88 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 9]
5.2 列表的嵌套

1 # 列表的嵌套 2 3 li = ['why', 'alex', '武藤蘭', 'python', ['wusir', 'egon', 89], 23] 4 5 print(li[2][1]) # 藤 6 7 li[0]= li[0].capitalize() # 第一個元素變為首字符大寫 8 print(li) # ['Why', 'alex', '武藤蘭', 'python', ['wusir', 'egon', 89], 23] 9 10 li[4][0] = li[4][0].upper() # 將wusir變為大寫 11 12 print(li) # ['Why', 'alex', '武藤蘭', 'python', ['WUSIR', 'egon', 89], 23]
6.tuple元組
也叫只讀列表,只能讀,不能被修改。可以查詢但不能被更改。同時可以切片。

1 # 元祖 只讀列表,可循環查詢,可切片 2 # 兒子不能被改,孫子可可能可以改 3 tu = (1, 2, 3, 'alex', [2, 3, 4, 'why'], 'egon') # 里面的整個元素不能被改,但是元素如果不是元組是列表,列表中的內容可以改 4 5 print(tu[3]) # alex 6 7 print(tu[0:4]) # (1, 2, 3, 'alex') 8 9 for i in tu: 10 print(i) 11 12 tu[4][3] = tu[4][3].upper() # why 改為大寫 13 14 print(tu) # (1, 2, 3, 'alex', [2, 3, 4, 'WHY'], 'egon') 15 16 # tu[4] = tu[4].append('SB') # 報錯, 17 tu[4].append('SB') 18 print(tu) # (1, 2, 3, 'alex', [2, 3, 4, 'WHY', 'SB'], 'egon')
7.dict字典
可存儲大量數據,關系型。關系型數據要存儲在字典中。

1 # dict 2 ''' 3 數據類型划分:可變數據類型,不可變數據類型 4 不可變數據類型:tuple,bool,int str,又叫可哈希 5 可變數據類型:list,dict,set(集合), 又叫不可哈希 6 7 dict key: 必須是不可變數據類型,也就是可哈希,tuple,bool,int,str 8 value:任意數據類型 9 10 dict 優點:二分查找去查詢 11 存儲大量關系型數據 12 特點:無序的(python3.5包含以前的都是無序的) 13 14 ''' 15 16 # dic = { 17 # 'name' : ['why', 'python', '關羽'], 18 # 'py9' : [{'num' : 108, 'avg_age' : 18}], 19 # True : 1, 20 # (1, 2, 3) : 'wuyiyi', 21 # 2 : '趙雲' 22 # } 23 # 24 # print(dic) 25 26 dic = {'age' : 18, 'name' : 'why', 'sex' : 'male'} 27 28 # 增 29 dic['high'] = 170 # 沒有鍵就是增加,有就是更改 30 print(dic) # {'high': 170, 'age': 18, 'name': 'why', 'sex': 'male'} 31 32 dic['age'] = 16 # 如果有鍵值會覆蓋 33 print(dic) # {'high': 170, 'age': 16, 'name': 'why', 'sex': 'male'} 34 35 # 增 setdefault 36 dic.setdefault('weight', 120) 37 print(dic) # {'weight': 120, 'high': 170, 'sex': 'male', 'name': 'why', 'age': 16} 38 39 dic.setdefault('age', 20) # 有鍵值對,不做任何改變,沒有那個鍵值對則添加 40 print(dic) # {'weight': 120, 'high': 170, 'sex': 'male', 'name': 'why', 'age': 16} 41 42 43 # 刪 按照鍵去刪 44 print(dic.pop('age')) # 有返回值 16 45 print(dic) # {'sex': 'male', 'name': 'why', 'weight': 120, 'high': 170} 46 47 print(dic.pop('哈哈', None)) # 返回None 沒有哈哈這個鍵時,則返回None,返回值可設置,有哈哈這個鍵則刪除哈哈這個鍵值對 48 print(dic) 49 50 print(dic.popitem()) # 隨機刪除 返回值是元組形式的鍵和值 51 print(dic) 52 53 # 清空字典 54 dic.clear() 55 print(dic) 56 dic = {'age' : 18, 'name' : 'why', 'sex' : 'male'} 57 58 # del也可刪除鍵值對 59 del dic['name'] 60 print(dic) 61 62 # 刪除字典 63 # del dic 64 65 66 # 改 67 dic = {'age' : 18, 'name' : 'why', 'sex' : 'male'} 68 69 dic['age'] = 25 70 print(dic) 71 72 # 改 update 73 dic2 = {'name' : 'fqq', 'weight' : 120} 74 dic.update(dic2) # 將dic2內容更新到dic中,如果dic中沒有則新增,如果dic中有則覆蓋 75 print(dic) 76 print(dic2) 77 78 79 # 查 80 dic = {'age' : 18, 'name' : 'why', 'sex' : 'male'} 81 print(dic.keys(), type(dic.keys())) # dic.keys()返回的當成list,返回的list中全是鍵 dict_keys(['sex', 'age', 'name']) <class 'dict_keys'> 82 print(dic.values()) # 返回的也相當於list,list里面放的全是值 dict_values(['male', 18, 'why']) 83 print(dic.items()) # 返回的也相當於list,list里都是元祖,元組里是鍵值對 dict_items([('sex', 'male'), ('age', 18), ('name', 'why')]) 84 85 for i in dic: 86 print(i) # 打印的全是鍵 87 88 for i in dic.keys(): 89 print(i) # 打印的全是鍵 90 91 for i in dic.values(): 92 print(i) # 打印的全是值 93 94 a = 1 95 b = 2 96 a, b = b, a 97 print(a, b) # 2 1 98 99 a, b = [1, 2] 100 print(a, b) # 1 2 101 102 a, b = [1, 2], [2, 3] 103 print(a, b) # [1, 2] [2, 3] 104 105 a, b = (1, 2) 106 print(a, b) # 1 2 107 108 # ('sex', 'male') 109 # ('name', 'why') 110 # ('age', 18) 111 for i in dic.items(): # items返回的是list,list中有元組,元組內容為鍵值對 112 print(i) 113 114 115 # sex male 116 # age 18 117 # name why 118 for k, v in dic.items(): 119 print(k, v) 120 121 122 # 查 123 dic = {'age' : 18, 'name' : 'why', 'sex' : 'male'} 124 125 print(dic['name']) # why 126 127 # print(dic['sdf']) # 報錯,字典中沒有這個鍵值對是會報錯 128 129 # 查 get 130 print(dic.get('name')) # why 131 print(dic.get('sdf')) # None 沒有不會報錯,默認會返回None 132 133 print(dic.get('sdf', '沒有這個鍵')) # 沒有這個鍵, 沒有不會報錯,會返回設置的值
7.1 dict的嵌套

1 # dict嵌套 2 3 dic = { 4 'name' : ['alex', 'wusir', 'python'], 5 'py9' :{ 6 'time' : '1213', 7 'learn_money' : 19800, 8 'address' : 'CBD', 9 }, 10 'age' : 25 11 } 12 13 # 將age的值改為56 14 15 dic['age'] = 56 16 17 # 將name對應的列表中添加一個新的名字 18 dic['name'].append('趙雲') 19 20 # 將wusir變為全大寫 21 dic['name'][1] = dic['name'][1].upper() 22 23 # 將py9對應的字典添加一個鍵值對 female : 8 24 # dic['py9']['female'] = 6 # 或 dic['py9'].setdefault('female', 6) 25 26 print(dic)
8.for 循環
for x in 可迭代的對象(由很多個元素的):
pass
1 s = 'fhdsklfds' 2 for i in s: 3 print(i)

1 # 循環打印這個list,但是遇到list中的list也要循環打印出 2 li = [1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'why'], 'python'] 3 4 5 for i in li: 6 if type(i) == list: 7 for j in i: 8 print(j) 9 else: 10 print(i)
8.1 補充range

1 # range 一般都與for配合使用.range 顧頭不顧尾。可以看成一個list,但是里面都是數字 2 for i in range(0, 100): 3 pass 4 5 for i in range(10): # 從0開始,可以不寫頭 6 pass 7 8 for i in range(0, 10, 2): # 可以加步長 9 pass 10 11 for i in range(10, 0, -1): # 可以倒着 12 #print(i) 13 pass 14 15 for i in range(0, 10, -1): 16 print(i) # 什么都沒有
9. 補充join

1 # join 可迭代對象都可以用其操作 2 3 s = 'alex' 4 5 s1 = '_'.join(s) # a_l_e_x 將s這個可迭代對象,將每個迭代出來的元素用'_'連接,最終返回的是一個str 6 7 print(s1) 8 9 li = ['why', 'alex', '武藤蘭', 'python'] 10 s = ''.join(li) 11 print(s) # whyalex武藤蘭python 12 13 # 想讓字符串轉換為list可用str的split方法,想讓list轉換為str可用join方法
10.補充例子

1 # 獲取用戶的輸入,判斷含整體數字的個數 2 info = input('>>>') 3 for i in info: # info因為是不可變的,for認為info不會變,所以遍歷的元素這里已經固定,所以下面的賦值並不會這里, 4 if i.isalpha(): # 判斷是否是字符 5 info = info.replace(i, ' ') # 將所有字符替換未空格符 6 7 l = info.split() # 默認用any空白字符進行分隔, spilit得到的是list,list中元素全是數字 8 9 print(len(l))
11.基礎類型匯總補充
想看每個數據類型的所有操作方法,如果使用pycharm,則ctrl + 鼠標左鍵,可跳過去有所有方法。

1 # list 在循環list當中,將list中的元素刪除 2 lis = [11, 22, 33, 44, 55] 3 4 # 報錯,因為list是可變數據類型,不可哈希,刪除list中的一個元素后,list中就少一個,而i是0到5,所以后面i索引的位置已經沒了t元素 5 # range(len(lis))只認一次,只確定一次,所以range(len(lis))得到5后一直不變 6 # for i in range(len(lis)): 7 # print(i) 8 # print(lis) 9 # del lis[i] 10 11 12 13 # 循環的方式,將lis中的奇數索引位置的數據刪除掉 14 # 不可以的方法 15 lis = [11, 22, 33, 44, 55, 66, 99] 16 for i in lis: 17 print(lis.index(i)) 18 print(lis) 19 if lis.index(i) % 2 == 1: 20 lis.remove(i) 21 22 print(lis) 23 24 25 # 刪除字典中,含有k元素的鍵值對 26 dic = {'k1' :'v1', 'k2' : 'v2', 'a3' : 'v3'} 27 28 # 此種方法會報錯 29 # for i in dic: 30 # if 'k' in i: 31 # print("===") 32 # del dic[i] 33 # 此種方法可以 34 # dic1 = {} 35 # for i in dic: 36 # if 'k' not in i: 37 # dic1.setdefault(i, dic[i]) 38 # dic = dic1 39 # print(dic) 40 41 # 此種方法也可以,循環字典刪除字典元素不可以,就使用循環字典,將要刪除的鍵放入到list中,循環list進行刪除dic 42 l = [] 43 for i in dic: 44 if 'k' in i: 45 l.append(i) # l 中全是含有k的鍵 46 for i in l: 47 del dic[i] 48 print(dic) 49 50 # 不要在循環list和循環dic中刪除list和dic元素 51 52 # 元祖 53 tu1 = (1) # 元組中只有一個元素,並且不沒有逗號,那此元素是什么類型,就是什么什么類型,並不是元組類型 54 tu2 = (1, ) # 元組括號內有一個元素,並有逗號,就是元組