日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习(四) —— 编码

發布時間:2024/4/17 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习(四) —— 编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、枚舉

  enumerate,for i in enumerate(可迭代對象),返回元組,內容是(序列號,可迭代的每一個元素)

  ?    ? ? ?for i,j in enumerate(可迭代對象,開始序列號),返回序列號,可迭代的每一個元素

a = 'abc' b = {'a':1,'b':2} for i in enumerate(a):print(i) #輸出: #(0, 'a') #(1, 'b') #(2, 'c')for i,j in enumerate(a,1):print(i,j) #輸出: #1 a #2 b #3 c

?

二、內存地址:id()

  ==比較的是值,is 比較的是內存地址

  小數據池:int:-5~256

       str:1.不能有空格  

        ? ? 2.長度不能超過20  

?         ??3.不能有特殊字符

a = [] b = [] print(a == b,a is b) #True False a = 'abc' b = 'abc' print(a == b,a is b) #True True a = '-6' b = '-6' print(a == b,a is b) #True False

?

三、編碼

  在python3中,str的表現形式為字符串,bytes的表現形式為b字符串,str的實際編碼方式是unicode,bytes的編碼方式是utf-8、gbk、gb2312...

  在python3中,unicode:1個字符(無論中文、英文、數字),都用4個字節表示

        ? utf-8:用最少的字節表示一個字符,英文占1個字節,歐洲文字占2個字節,亞洲文字占3個字節

        ? gbk:英文占1個字節,中文占2個字節

  在python3中,字符串存在內存中是unicode編碼方式,不能直接傳輸或者存儲在硬盤,要轉成bytes類型,unicode轉bytes:a.endode('編碼方式'),bytes轉unicode:a.decode('編碼方式')

        ? utf-8和gbk、gb2312等編碼方式互不識別,如果要轉化,要先解碼(decode)成unicode方式,再編碼(encode)成對應的方式。

a = 'abc' b = a.encode('utf-8') print(b,type(b)) #b'abc' <class 'bytes'> a = '你好' b = a.encode('utf-8') print(b,type(b)) #b'\xe4\xbd\xa0\xe5\xa5\xbd' <class 'bytes'> c = b.decode() print(c,type(c)) #你好 <class 'str'> d = c.encode('gbk') print(d,type(d)) #b'\xc4\xe3\xba\xc3' <class 'bytes'>

?

四、集合(set)

  集合用{}表示,集合是無序、不重復的數據集合,它里面的元素是可哈希的(不可變類型),但是集合本身是不可哈希。

  特點:去重,把一個列表變成集合,就自動去重了;

    ? ? 關系測試,測試兩組數據之前的交集、差集、并集等關系;

  1、增:add(),update()(迭代著增加)

set1 = {1,2,3} set1.add('abc') print(set1) #{1,2,3,'abc'} set1 = {1,2,3} set1.update('abc') print(set1) #{1,2,3,'a'.'b'.'c'}

?

  2、刪:remove('元素')、pop():隨機刪除一個元素,并返回這個元素、clear():清空集合

set1 = {1,2,3,'a','b','c'} set1.remove(1) #刪除一個元素 print(set1) #{2,3,'a','b','c'} set1.pop() #隨機刪除一個元素 print(set1) #{3,'a','b','c'} set1.clear() #清空集合 print(set1) #set()

?

  3、集合的其它操作

    3.1、交集(& 或者 intersection)

set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 & set2) # {4, 5} print(set1.intersection(set2)) # {4, 5}

?

    3.2、并集(| 或者 union)

set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8} print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7,8}

 

    3.3、差集(- 或者 difference)

set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 - set2) # {1, 2, 3} print(set1.difference(set2)) # {1, 2, 3} print(set2 - set1) #{8, 6, 7} print(set2.difference(set1)) #{8, 6, 7}

?

    3.4、反交集(^ 或者 symmetric_difference)

set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 ^ set2) # {1, 2, 3, 6, 7, 8} print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}

?

    3.5、子集: < 或者 issubset  超集: > 或者 issuperset

set1 = {1,2,3} set2 = {1,2,3,4,5,6}print(set1 < set2) # True print(set1.issubset(set2)) # Trueprint(set2 > set1) # True print(set2.issuperset(set1)) # True

?

  5、frozenset:不可變集合,讓集合變成不可變類型

s = frozenset('barry') print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

?

五、深淺copy

  1、賦值運算

l1 = [1,2,3,['a','b']] l2 = l1l1[0] = 111 print(l1) # [11, 2, 3, ['a','b']] print(l2) # [11, 2, 3, ['a','b']] l1[3].append('c') print(l1) # [11, 2, 3, ['a','b','c']] print(l2) # [11, 2, 3, ['a','b','c']]

  對于賦值,指向的是同一個列表,所以更改l1的時候,l2也隨之改變

?

  2、淺拷貝:copy()

l1 = [1,2,3,['a','b']] l2 = l1.copy()l1[0] = 111 print(l1) # [111, 2, 3, ['a','b']] print(l2) # [1, 2, 3, ['a','b']],1沒有改變 l1[3].append('c') print(l1) # [111, 2, 3, ['a','b','c']] print(l2) # [1, 2, 3, ['a','b','c']],列表里面的列表變了

  對于淺copy來說,第一層創建的是新的內存地址,而從第二層開始,指向的都是同一個內存地址,所以,對于第二層以及更深的層數來說,保持一致性。

?

  3、深拷貝:copy.deepcopy(),pycharm需要import copy

import copy l1 = [1,2,3,['a','b']] l2 = copy.deepcopy(l1)l1[0] = 111 print(l1) # [111, 2, 3, ['a','b']] print(l2) # [1, 2, 3, ['a','b']],1沒有改變 l1[3].append('c') print(l1) # [111, 2, 3, ['a','b','c']] print(l2) # [1, 2, 3, ['a','b']],列表里面的列表也沒有發生改變

  對于深copy來說,兩個是完全獨立的,改變任意一個的任何元素(無論多少層),另一個絕對不改變

?

轉載于:https://www.cnblogs.com/Coufusion/p/7750676.html

總結

以上是生活随笔為你收集整理的Python学习(四) —— 编码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。