Python全棧-第七課 學習筆記

Python第七課 學習筆記

基礎數據類型的補充

  • strpython

  • s1 = 'jarvis'
    #capitalize 首字母大寫,其他變小寫
    print(s1.capitalize())
    #swapcase   大小寫翻轉
    print(s1.swapcase())
    #title		每一個單詞的首字母大寫
    msg= 'jarvis one'
    print(msg.title())
    
    s1 = 'jarvis'
    #center(總長度、寬度,填充物)		居中
    print(s1.center(20))
    print(s1.center(20,'*'))
    
    #find :經過元素找索引,找到第一個就返回,找不到 返回-1
    #index:經過元素找索引,找到第一個就返回,找不到 報錯
    print(s1.find('a'))
    print(s1.find('r'))
    print(s1.find('o'))
    print(s1.index('o'))
  • 元組(tuple)面試

  • #元組中若是隻有一個元素,而且沒有逗號,那麼它不是元組,它與所改元素的數據類型一致。
    tu1 = (2,3,4)
    tu1 = (2)
    tu1 = ('太白')
    tu1 = ([1,2,3])
    tu1 = (1,)
    print(tu1,type(tu1))
    
    tu = (1,2,3,3,3,2,2,3,)
    #count 		計數
    print(tu.count(3))
    tu = ('one', 'two', 'one')
    #index 		經過元素去找索引
    print(tu.index('one'))
  • 列表api

  • l1 = ['one', 'two', 'three', 'four']
    #count pass
    #index		經過元素去找索引
    print(l1.index('four'))
    #sort  		排序,數字排序纔是有意義的
    l1 = [5, 4, 3, 7, 8, 6, 1, 9]
    l1.sort()  				#默認從小到大排序
    l1.sort(reverse=True)  	#從大到小排序
    l1.reverse()  			#反轉
    print(l1)
    
    #列表能夠相加追加在後面	列表不去重
    l1 = [1, 2, 3]
    l2 = [1, 2, 3, 'one', 'two', 'three']
    print(l1 + l2)
    
    #列表與數字相乘複製三次
    l1 = [1, 'two', 3]
    l2 = l1*3
    print(l2)
    
    l1 = [11, 22, 33, 44, 55]
    #索引爲奇數對應的元素刪除(不能一個一個刪除,此l1只是舉個例子,裏面的元素不定)。
    
    #正常思路:
    #先將全部的索引整出來。
    #加以判斷,index % 2 == 1: pop(index)
    for index in range(len(l1)):
    	if index % 2 == 1:
    		l1.pop(index)
    print(l1)
    
    #列表的特性:(順沿)
    l1 = [11, 22, 33, 44, 55]
    #最簡單的:
    del l1[1::2]
    print(l1)
    
    l1 = [11, 22, 33, 44, 55]
    #倒序法刪除元素
    for index in range(len(l1)-1,-1,-1):
    	if index % 2 == 1:
    		l1.pop(index)
    print(l1)
    
    #思惟置換
    l1 = [11, 22, 33, 44, 55]
    new_l1 = []
    for index in range(len(l1)):
    	if index % 2 ==0:
    		new_l1.append(l1[index])
    print(new_l1)
    l1 = new_l1
    print(l1)
    # 循環一個列表的時,最好不要改變列表的大小,這樣會影響你的最終的結果。
  • 字典網絡

  • #字典的補充
    #update			增長鍵值對  修改  元組拆包後添加鍵值對
    dic = {'name': 'jarvis', 'age': 18}
    dic.update(hobby='運動', hight='175')
    dic.update(name='one')
    dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])  # 面試會考
    print(dic)
    #update			其餘用法更新
    dic1 = {"name":"jarvis","age":18,"sex":"man"}
    dic2 = {"name":"alex","weight":175}
    dic1.update(dic2)  		#更新,有則覆蓋,無則添加
    print(dic1) 	# {'name': 'jarvis', 'age': 18, 'sex': 'man', 'weight': 175}
    print(dic2)
    
    #fromkeys		來自鍵,這個鍵來自於一個可迭代對象,值共用一個
    dic = dict.fromkeys('abc', 100)
    dic = dict.fromkeys([1, 2, 3], 'jarvis')
    #坑:值共用一個,面試題
    dic = dict.fromkeys([1,2,3],[])
    dic[1].append(666)
    print(dic)
    
    dic = {'k1': 'one', 'k2': 'two', 'k3': 'three', 'age': 18}
    #將字典中鍵含有'k'元素的鍵值對刪除。
    #錯誤方法
    for key in dic:
    	if 'k' in key:
    		dic.pop(key)
    print(dic)
    
    #循環一個字典時,若是改變這個字典的大小,就會報錯。
    dic = {'k1': 'one', 'k2': 'two', 'k3': 'three', 'age': 18}
    l1 = []
    for key in dic:
    	if 'k' in key:
    		l1.append(key)
    print(l1)
    for i in l1:
    	dic.pop(i)
    print(dic)
    
    for key in list(dic.keys()):  #強制轉化成列表['k1', 'k2', 'k3','age']
    	if 'k' in key:
    		dic.pop(key)
    print(dic)
  • 數據類型的轉換app

  • # 0,''(),[],{},set(),None  轉換成bool值爲False

編碼的進階

  • 編碼的進階學習

    • ASCII碼:包含英文字母,數字,特殊字符與01010101對應關係。編碼

      • a 01000001 一個字符一個字節表示。
    • GBK:只包含本國文字(以及英文字母,數字,特殊字符)與0101010對應關係。code

      • a 01000001 ascii碼中的字符:一個字符一個字節表示。
      • 中 01001001 01000010 中文:一個字符兩個字節表示。
    • Unicode包含全世界全部的文字與二進制0101001的對應關係。對象

      • a 01000001 01000010 01000011 00000001
      • b 01000001 01000010 01100011 00000001
      • 中 01001001 01000010 01100011 00000001
    • UTF-8:包含全世界全部的文字與二進制0101001的對應關係(最少用8位一個字節表示一個字符)。排序

      • a 01000001 ascii碼中的字符:一個字符一個字節表示。
      • To 01000001 01000010 (歐洲文字:葡萄牙,西班牙等):一個字符兩個字節表示。
      • 中 01001001 01000010 01100011 亞洲文字:一個字符三個字節表示。
  • 不一樣的密碼本之間可否互相識別?不能。

  • 數據在內存中所有是以Unicode編碼的,可是當你的數據用於網絡傳輸或者存儲到硬盤中,必須是以非Unicode編碼(utf-8,gbk等等)。

  • 英文

    • str: 'hello '
      • 內存中的編碼方式: Unicode
      • 表現形式: 'hello'
    • bytes:
      • 內存中的編碼方式: 非Unicode
      • 表現形式:b'hello'
  • 中文

    • str:‘中國’
      • 內存中的編碼方式: Unicode
      • ​ 表現形式:'中國'
    • bytes:
      • 內存中的編碼方式: 非Unicode # Utf-8
      • 表現形式:b'\xe4\xb8\xad\xe5\x9b\xbd'
  • #.encode('編碼本類型')編碼   
    #str ---> bytes
    s1 = '中國'
    b1 = s1.encode('utf-8')  	#編碼
    print(b1,type(b1))  		#b'\xe4\xb8\xad\xe5\x9b\xbd'
    b1 = s1.encode('gbk')  		#b'\xd6\xd0\xb9\xfa' <class 'bytes'>
    
    #.decode('解碼本類型')解碼
    #bytes---->str
    b1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
    s2 = b1.decode('utf-8')  	#解碼
    print(s2)
  • #先將gbk編碼本解碼爲Unicode,再用utf-8編碼
    #gbk ---> utf-8
    b1 = b'\xd6\xd0\xb9\xfa'
    s = b1.decode('gbk')
    # print(s)
    b2 = s.encode('utf-8')
    print(b2)  					#b'\xe4\xb8\xad\xe5\x9b\xbd'
相關文章
相關標籤/搜索