標籤:測試 lsa diff lower 反向 lex 迭代 enc ali
python基礎-資料類型
python 資料類型包括 數字類型、字串、列表、元組、字典、集合。
1、 int 整數型
eg:1,2,3 .... 用於計算,運算。
#.bit_length() 將十進位轉換為二進位的最小有效位元i = 3i = 4print(i.bit_length())"""二進位 十進位0000 0001 10000 0010 20000 0011 30000 0100 4"""
2、str 字串
eg: ‘老男孩’,‘alex‘.... 可以 少量的資料的儲存
2,1 索引(下標)
#字串是有索引的。什麼是索引? 索引即下標,就是字串組成的元素從第一個開始,初始索引為0以此類推。s = ‘python自動化營運21期‘#第一個元素s1 = s[0]#第二個元素print(s1)s2 = s[2]print(s2)#最後一個元素s3 = s[-1]print(s3)#倒數第二個元素s4 = s[-2]print(s4)
2.2 切片
#切片就是通過索引(索引:索引:步長)截取字串的一段,形成新的字串(原則就是顧頭不顧腚)。#s[起始索引:結束索引+1:步長]#想要取到第5位s1 = s[0:6] #顧頭不顧腚#開頭0可以忽略s1 = s[:6]print(s1)#取6位到8位s2 = s[6:9]print(s2)#開頭取到第四位,間隔為一,步長就是2s3 = s[:5:2]print(s3)#從頭取值到結尾s4 = s[:]print(s4)#倒著取到第四個,步長必須寫s5 = s[-1:-5:-1] #倒著取值,必須加反向步長print(s5)
2.3 操作方法
#對字串進行操作,形成新的字串#常用: #全部大寫upper() #全部小寫lower()s2 = s.upper()s3 = s.lower()print(s2,s3)## 驗證密碼不區別大小寫code = ‘QeAr‘.upper()your_code = input(‘請輸入驗證碼:‘).upper()if your_code == code: print(‘驗證成功‘)# center 置中,倆側進行填充。長度可自己設定,預設填充物None s6 = s.center(30) s6 = s.center(30,"*") print(s6)#startswith 判斷以什麼為開頭#endswith 判斷以什麼為結尾#也是顧頭不顧尾s = ‘oldBoy‘*** startswith endswiths7 = s.startswith(‘o‘)s7 = s.startswith(‘ol‘)s7 = s.startswith(‘oldBoy‘)s7 = s.startswith(‘Bo‘,3,5)print(s7)#後期可以根據開頭判斷走什麼商務邏輯#strip 預設去除首尾的空格,還可以定位字元\t,分行符號,還可以迭代去除元素#lstrip() 只去除左邊的 #rstrip() 只去除右邊的s = ‘ oyldBoy ‘print(s)#預設去除首尾的空格s8 = s.strip()print(s8)#去除元素s81 = s.strip(‘t‘)print(s81)#迭代去除元素s81 = s.strip(‘tey‘)print(s81)name = input(‘>>>‘).strip()if name == ‘oldboy‘: print(‘驗證成功‘)#split (str ---> list)以什麼分割,最終形成一個列表此列表不含有這個分割的元素#以空格 或者以逗號分隔s1 = ‘oldboy wusir alex‘s1 = ‘oldboy,wusir,alex‘l = s.split()print(l)l = s1.split(‘,‘)print(l)#以o分割 ,最終列表將沒有o元素s = ‘oldboywusiroalex‘l2 = s.split(‘o‘) # [‘‘, ‘ldb‘, ‘ywusir‘, ‘alex‘]print(l2)# 還可以添加修改的次數l2 = s.split(‘o‘,1) # [‘‘, ‘ldboywusiroalex‘]print(l2)#join 將list --->str。裡面的元素通過串連符形成新的字串#缺點:裡面有非字串元素,就會報錯# s9 = ‘+‘.join(s)# s9 = ‘_‘.join(s)# print(s9)# l1 = [‘oldboy‘,‘wusir‘,‘alex‘]# s91 = ‘_‘.join(l1)# print(s91)#replace 替換,可以限制次數s = ‘大鐵鎚fdsalj鐵鎚妹妹範德薩‘s10 = s.replace(‘鐵鎚‘,‘鋼蛋‘)print(s10)#find 通過元素找索引 找不到返回-1#index 通過元素找索引 找不到報錯ind = s.find(‘d‘)print(ind)ind = s.find(‘o‘)print(ind)ind = s.find(‘A‘)print(ind)ind = s.index(‘A‘)print(ind)#公用方法:元組、列表、字串都可以用的方法#len 統計有多少個元素# count 統計元素出現幾次 s = ‘fdsafsdagsdafjdskahdhjlsadhfkj‘ print(len(s)) s = ‘fdsadd‘ print(s.count(‘d‘))#格式化輸出formatres=‘我叫{}今年{}歲,愛好{}‘.format(‘egon‘,18,‘male‘)print(res)#可以根據索引進行替換res=‘我叫{0}今年{1}歲,愛好{2},我依然叫{0}‘.format(‘egon‘,18,‘male‘)print(res)#無需注意順序,可以根據key找到值res=‘{name} {age} {sex}‘.format(sex=‘male‘, name=‘egon‘, age=18)print(res)#is系列name = ‘jinxin123‘print(name.isalnum()) #字串由字母或數字組成print(name.isalpha()) #字串只由字母組成print(name.isdigit()) #字串只由數字組成i = ‘123a‘if i.isdigit(): i = int(i)else: print("輸入有誤...")#不常用:# capitalize 首字母大寫,其他字母小寫s = ‘oldBoy‘#capitalize 首字母大寫,其他字母小寫s1 = s.capitalize()print(s1)#*大小寫反轉 swapcase()s4 = s.swapcase()print(s4)#非字母的元素隔開的每個單字首大寫 title() s = ‘alex wusir*oldboy3taibia‘ s5 = s.title() # Alex Wusir*Oldboy3Taibia print(s5)
3、bool 布爾值 (True、False)
#數值 字串 布爾之間轉換#int可以任意轉換為strint ---> str :str(int)#str轉換為int必須全部是數字組成。str ---> int :int(str) #int 轉換boolint --- > bool 0 False 非零 True#bool轉換為intbool ---> int int(True) 1 int(False) 0#str轉換為boolstr ---> bool ""為False 非Null 字元串為True# print(int(True))# print(bool("")) # False
4、list 列表
eg:[True,1,‘alex‘,{‘name‘:‘oldboy‘},[1,2,3],(2,3,4),{‘wusir‘}]
4.1 列表是有序的,有索引值,可切片,方便取值
li = [111,‘alex‘,222,‘wusir‘]print(li[1]) # alexprint(li[-1]) # wusirprint(li[:2]) # [111, ‘alex‘]print(li[:3:2])
4.2 增
l = [‘老男孩‘, ‘alex‘, ‘wusir‘, ‘taibai‘, ‘ritian‘]#append 在最後追加l.append(‘葫蘆‘) #無傳回值,不能列印添加動作l.append([1,2,3])print(l)#insert 插入,任意位置l.insert(1,‘景nvshen‘)print(l)#迭代著添加,必須可迭代,按添加最小元素一一添加進去。l.extend(‘alex‘)l.extend([‘111‘,222,333])print(l)
4.3 刪
#pop 四種操作唯一有傳回值 按照索引刪除print(l.pop(0))print(l)#remove 按照元素取刪除l.remove(‘alex‘)print(l)#clear 清空列表,還在記憶體中佔著位置l.clear()print(l)#del 記憶體層級刪除列表del lprint(l)#按索引刪除del l[1]print(l)#切片刪除del l[:3]print(l)
4.4 改
#按照索引改print(l[2])l[2] = ‘武藤蘭‘print(l)#按照切片去改l[:2] = ‘abc‘ #切面地區都刪除,添加按最小元素添加,可以不對等print(l)l[1:3] = [111,222,333,444]print(l)
4.5 查
#按照索引去查詢,按照切片去查詢for i in l: print(i)l1 = [1,2,1,2,1,1,3,4]#其他方法:#count 計數 計算元素個數print(l1.count(1))#len 計算多少元素print(len(l1))#通過元素找索引,找到第一個就返回print(l1.index(2))l2 = [3,2,4,6,9,8,7,1]#排序#sort 正序l2.sort() 從小到大print(l2)l2.sort(reverse=True) #從大到小排序,加參數print(l2)#reverse 倒序排列l2.reverse()print(l2)
4.6 列表的嵌套
#列表的嵌套l1 = [1, 2, ‘alfdsafex‘, ‘wusir‘,[‘oldboy‘, ‘ritian‘, 10], ‘taibai‘]#1,將‘alex‘全部變成大寫,放回原處。l1[2] = ‘ALEX‘ #將單獨元素賦值 print(l1[2].upper())l1[2] = l1[2].upper()print(l1)#2.給[‘oldboy‘, ‘ritian‘, 99] 追加一個元素‘女神’。 一個方法l1[-2].append(‘女財神‘)print(l1)#3,將‘ritian‘首字母大寫,放回原處。l1[-2][1] = l1[-2][1].capitalize()print(l1)#4,將10通過數字相加,或者字串相加或者等等,變成‘100‘l1[-2][-1] = str(l1[-2][-1] + 90)print(l1)#字串的拼接l1[-2][-1] = str(l1[-2][-1]) + ‘0‘print(l1)
5、 tuple 元組 唯讀列表
eg:(True,1,‘alex‘,{‘name‘:‘oldboy‘},[1,2,3],(2,3,4),{‘wusir‘}) 唯讀列表
存放多個值,元組不可變,更多的是用來做查詢
元組本身是不可變的,但是內部的元素可以是可變類型
tu = (11,2,True,[2,3,4],‘alex‘)#迴圈去查for i in tu: print(i)#索引print(tu[1])#切片print(tu[:3:2])#通過元素找索引print(tu.index(True))#元素統計print(tu.count(2))print(len(tu))#內部的元素可以是可變類型tu[-2].append(666)print(tu)
6、dict 字典 key:value 成對組成的
eg :{‘name‘:‘oldboy‘,‘age‘:45,‘name_list‘:[‘張三‘....]}
字典的key是唯一的。key 必須是不可變的資料類型。
key:不可變的資料類型(可雜湊):str,bool,tuple,int。
value:任意資料類型。
資料類型分類:
不可變的資料類型(可雜湊):str,bool,tuple,int
可變的資料類型:dict,list,set。
容器類資料類型:list,tuple,dict,set.
字典:儲存資料多,關係型資料,查詢速度快(二分尋找)。
3.6版本之前,字典是無序的,3.6之後字典是有序的。
6.1增
#dic[‘high‘] 有則覆蓋,無則添加dic[‘high‘] = 180dic[‘name‘] = ‘ritian‘print(dic)#dic.setdefault() 有則不變,無則添加dic.setdefault(‘high‘)dic.setdefault(‘high‘,180)dic.setdefault(‘name‘,‘日天‘)print(dic)
6.2 刪
#字典中的key就相當於索引print(dic.pop(‘name‘)) # 傳回值 對應的值print(dic.pop(‘name1‘,‘沒有此key sb‘))#沒有name1,刪除不報錯print(dic)print(dic)dic.clear() # 清空print(dic)print(dic.popitem()) #隨機刪除,傳回值print(dic)del dicprint(dic)del dic[‘age‘]print(dic)
6.3 改
dic[‘name‘] = ‘老男孩‘print(dic)dic = {"name":"jin","age":18,"sex":"male"}dic2 = {"name":"alex","weight":75}dic2.update(dic) # 將dic的索引值對覆蓋添加到dic2中,dic不變。print(dic)print(dic2)
6.4 查
#get查詢,沒有key不報錯print(dic[‘name2‘])print(dic.get(‘name‘))print(dic.get(‘name1‘))print(dic.get(‘name1‘,‘沒有此key,sb‘))#keys() values() items() 字典的轉換#將key轉換為列表print(list(dic.keys()))for i in dic.keys(): print(i)#將value轉換為列表print(dic.values())for i in dic.values(): print(i)#將索引值對放到一個元組,元組在構成一個列表print(list(dic.items()))for i in dic.items(): print(i)#分別賦值a,b = 1,2a,b,c = [‘alex‘, ‘wusir‘, ‘ritain‘]print(a,b,c)a = 1b = 5a,b = b,aprint(a,b)for i in dic.items(): print(i)for k,v in dic.items(): print(k,v)#len 統計索引值對個數print(len(dic))#fromkeysdic1 = dict.fromkeys(‘abc‘,‘張三‘)dic2= dict.fromkeys([1,2,3],‘李四‘)print(dic2)#多個都公用一個列表,改一個其他也改dic3 = dict.fromkeys(‘abc‘,[])# print(dic3)dic3[‘a‘].append(‘老男孩‘)print(dic3)
6.5 字典的嵌套
dic = { ‘name_list‘:[‘b哥‘, ‘張帝‘, ‘人帥‘, ‘kitty‘], ‘老男孩‘:{ ‘name‘:‘老男孩‘, ‘age‘: 46, ‘sex‘: ‘ladyboy‘, },}#1,[‘b哥‘, ‘張帝‘, ‘人帥‘, ‘kitty‘]追加一個元素,‘騎兵‘dic[‘name_list‘].append(‘騎兵‘)print(dic)#2,將kitty全部變成大寫。l1 = dic[‘name_list‘]print(l1[-1].upper())l1[-1] = l1[-1].upper()print(dic)dic[‘name_list‘][-1] = dic[‘name_list‘][-1].upper()print(dic)#3,將老男孩 改成oldboy。dic[‘老男孩‘][‘name‘] = ‘oldboy‘print(dic),將ladyboy首字母大寫。dic[‘老男孩‘][‘sex‘] = dic[‘老男孩‘][‘sex‘].capitalize()print(dic)
7 set:集合
關係型資料的交集,並集,差集,子集.... 列表的去重。
集合:
無序,不重複的資料類型。它裡面的元素必須是可雜湊的。但是集合本身是不可雜湊的。
1:關係測試。交集並集,子集,差集....
2,去重。(列表的去重)
set1 = {1,‘alex‘,False,(1,2,3)}l1 = [1,1,2,2,3,3,4,5,6,6]l2 = list(set(l1))print(l2)set1 = {‘alex‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘}#增set1.add(‘666‘)print(set1)updateset1.update(‘abc‘)print(set1)#刪set1 = {‘alex‘,‘wusir‘,‘ritian‘,‘egon‘,‘barry‘}set1.remove(‘alex‘) # 刪除一個元素print(set1)set1.pop() # 隨機刪除一個元素print(set1)set1.clear() # 清空集合print(set1)del set1 # 刪除集合print(set1)
set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}#交集 & intersectioprint(set1 & set2)print(set1.intersection(set2))#並集 | unionprint(set1 | set2)print(set1.union(set2))#差集 - differenceprint(set1 - set2)print(set1.difference(set2))#反交集 ^ symmetric_differenceprint(set1 ^ set2)print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}set1 = {1,2,3}set2 = {1,2,3,4,5,6}#子集與超集print(set1 < set2)print(set1.issubset(set2)) # 這兩個相同,都是說明set1是set2子集。print(set2 > set1)print(set2.issuperset(set1))#不可變幾個,讓集合變為不可變s = frozenset(‘barry‘)s1 = frozenset({4,5,6,7,8})print(s,type(s))print(s1,type(s1))
8、資料類型的補充
l1 = [‘alex‘, ‘wusir‘, ‘taibai‘, ‘barry‘, ‘老男孩‘]#刪除奇數為元素,切片del l1[1::2]print(l1)#再迴圈一個列表時,不要對列表進行刪除的動作(改變列表元素的個數動作),會出錯for i in range(len(l1)): print(l1) # [‘alex‘, ‘wusir‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] # [‘alex‘, ‘wusir‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] # [‘alex‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] # [‘alex‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] print(i) # 0 1 2 3 if i % 2 == 1: del l1[i] print(l1) # [‘alex‘, ‘wusir‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] # [‘alex‘, ‘taibai‘, ‘barry‘, ‘老男孩‘] # [‘alex‘, ‘taibai‘, ‘barry‘] print(i) # 0 1#range可定製的數字列表,顧頭不顧尾range 可定製的數字列表for i in range(10): print(i)for i in range(1,10): print(i)#設定步長for i in range(1,10,2): print(i)#倒序for i in range(10,1,-1): print(i)print(range(10))for i in range(len(l1)-1,-1,-1): if i % 2 == 1: del l1[i]print(l1)dict 再迴圈字典時,不要改變字典的大小。dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘,‘r‘:666}l1 = []for i in dic: if ‘k‘ in i: l1.append(i)# print(l1)for i in l1: del dic[i]print(dic)tu 如果元組裡面只有一個元素並且沒有逗號隔開,那麼他的資料類型與該元素一致。tu1 = (1)print(tu1,type(tu1))tu2 = (‘alex‘)print(tu2,type(tu2))tu3 = ([‘alex‘,1,2])print(tu3,type(tu3))
9、 作業(購物車)
python基礎【資料類型】