python基礎【資料類型】

來源:互聯網
上載者:User

標籤:測試   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基礎【資料類型】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.