成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從5個維度總結Python數據結構的關系,發現了這些技巧

新聞 前端
在python中,我們經常用列表,字典等數據類型進行數據存儲或者重新構造一個序列,同時它們之間也有著一些關聯關系,接下來我們就對python中常用的幾種數據類型進行一個整體性的梳理。

 在python中,我們經常用列表,字典等數據類型進行數據存儲或者重新構造一個序列,同時它們之間也有著一些關聯關系,接下來我們就對python中常用的幾種數據類型進行一個整體性的梳理。

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

區別

相同點

  1. 都相當于一個容器,有存放數據的功能
  2. 都可以用for ... in 進行循環

不同點

  1. 序列存放的是不同類型的數據,迭代器中存放的是算法。
  2. 序列是將數據提前存放好,獲取數據時通過循環或索引來取數據 ;而迭代器不需要存放數據,獲取數據時通過算法獲取下一個數據 。
  3. 序列中的每一個數據都要開辟內存空間;而迭代器并不需要,它每次只需要通過算法計算出下一個值即可。從這個角度來看,如果進行大數據量處理,使用迭代器更合適 。
  4. 序列可以通過索引或鍵名來獲取某一個值,而迭代器只能使用next()獲取下一個值。

變化趨勢

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

從左到右,可以試圖找一些規律 。

  • 從對數據的排序來看,從左到右可以看出是無序的,有序的,有規則(也可以定義成有序的)
  • 從對數據的操作靈活度來看,左邊的操作性更加靈活,可以進行增刪改查 ;右邊相對來說比較單一只能進行查詢 (注意:定義后的字符串就只能進行查詢,通過方法生成的字符串并不是原來的字符串了)。若想關注這些數據類型中的具體方法,可參考:python的5種數據結構,方法很多記不住嗎?全在這里了.
  • 從定義數據類型的符號來看,也是遵循漢字的大-中-小-引 來實現的,如字典|集合是大括號,列表是中括號,元組是小括號,字符串為雙引號或單引號。

數據類型間的相互轉化

以上不同的數據類型,也可以實現兩者之間的相互轉化,轉化時只需要通過調用對應函數即可,如下圖

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

下圖是每種數據類型間的相互轉化及具體實例。

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

通過以上的表格可以看出,數據類型可以進行相互轉化,總結有以下幾點:

  • 無論轉化為什么數據類型,都是通過關鍵字將具體的數據類型括起來,如元組轉化為列表:list(tuple)
  • 轉化為字典時需要注意的是,必須每兩個數據為一組,用括號括起來,這樣才能正確的生成字典的鍵值對,如果是一個元素轉化時會報錯 。
  • 轉化為字符串時需要注意的是,雖然通過str(data)可以轉化為字符串,但很多情況并非是我們想要的,我們更想要的是將序列中的元素組合起來變成一個字符串 ,如果想實現這樣的需求,就可以使用join()方法實現。

轉化為字典時必須要求是兩個元素組合成一個元組才能進行轉化 。那為了簡便我們可以使用zip()將兩個序列組成一個新的字典更加方便。

  1. # 通過zip將兩個列表合并為一個序列,然后再轉化為字典。 
  2. lst1 = ['x','y','z']            #可以是一個列表,元組,集合 
  3. lst2 = [123,234,345]             
  4. print(dict(zip(lst1,lst2)))          
  5. #輸出: 
  6. {'x'345'y'234'z'123

通過str()進行轉化后的數據雖然變成了字符串,但是我們更想的是把序列中的元素結合起來變為字符串 。那么可以通過join()方法將其內的元素變為想要的字符串。

  1. #語法: 
  2.     "sep".join(seq)  
  3. #實例: 
  4.     x = "".join({'a':123,'b':345}) 
  5.     print("x:",x) 
  6.     y = ",".join(['java','python','c++']) 
  7.     print("y:",y) 
  8.     z = "_".join(("tuple","demo","01")) 
  9. #輸出: 
  10.     x: ab 
  11.     y: java,python,c++ 
  12.     z: tuple_demo_01 
  13. #說明: 
  14.     sep為分隔符,seq序列 

便捷式寫法-推導式

在以上的數據結構中,部分數據類型同樣支持推導式,推導式是可以將一個可迭代對象構建成新的可迭代對象的表達式結構體 。通過推導式可以快速實現出一個新的序列或生成器 ,也可以讓代碼更加優雅和快捷 。

為了更加直觀,我們可以一張圖來總結不同數據類型所支持的推導式。我們只需要記住推導式的433.

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

字典推導式

  1. #語法: 
  2.     {<operation_key:operation_value> for key,value in dict condition } 
  3. #實例: 
  4.     d = {'chinese'88'math'92'english'93'history'84
  5.     print("成績大于90分的科目:", {k: '優秀' for k, v in d.items() if v >= 90}) 
  6. #輸出 
  7.     成績大于90分的科目: {'math''優秀''english''優秀'
  8. #說明: 
  9.     for循環后的表達式可以是條件表達式或者循環表達式,主要是進行篩選或嵌套循環 
  10.     返回結果是一個根據表達式運算后生成出來的新字典 。 

集合推導式:

  1. #語法: 
  2.     {<operation_key:x> for x in set condition } 
  3. #實例 
  4.     s = {x**2 for x in [123]} 
  5.     print("集合s:",s) 
  6. #輸出:  
  7.     集合s: {149

列表推導式

  1. #語法: 
  2.     [ operation(x) for x in list condition ] 
  3. #實例 
  4.     print([random.randint(1,10)+x for x in range(0,10if x % 2 == 0]) 
  5. #結果: 
  6.     [33141512
  7. #說明: 
  8.     #對列表推導式常使用的幾種用法 
  9.     用法1:[x for x in iterable ]                  #循環后直接打印 
  10.     用法2:[x for x in iterable if condition(x) ]  #對x的條件判斷 
  11.     用法3:[operation(x) for x iterable if condition(x)]  #對x條件判斷后,再對x進行運算 
  12.     用法4: [operation(x,y) for x in iterable for y in iterable1] #嵌套循環,對x,y進行運算 

生成器推導式

  1. #語法: 
  2.     ( operation(x) for x in iterable condition ) 
  3. #實例 
  4.     print((random.randint(1,10)+x for x in range(0,10if x % 2 == 0)) 
  5. #結果: 
  6.     <generator object <genexpr> at 0x02FDC420
  7. #說明: 
  8.     新生成的生成器可以使用for循環,也可以next()獲取其下一個值 

組合用法

以上數據結構除了可以作為容器使用,也可以它們結合起來使用,以用作其它用途 。比如可以用作條件語句。為了直觀,我們先寫一個簡單的if語句。

  1. score = 92 
  2. if score >= 90
  3.     print('優秀'
  4. else
  5.     print('良好'
  6. #輸出:優秀 

接下來,我們就通過以下這三種方式來重新定義條件語句。

收獲頗多,從5個維度總結python數據結構的關系,發現了這些技巧

第一種,使用()+[]來實現條件判斷

  1. #語法: 
  2.     (<return_false>, <return_true>)[condition_expression] 
  3. #實例: 
  4.     score = 92 
  5.     print(('良好','優秀')[ score >= 90 ]) 
  6. #結果: 
  7.     優秀 
  8. #說明: 
  9.     在[]中寫條件語句,在()中寫返回為真和返回為假的值。一定要注意順序,()在前,[]在后 

第二種,使用{}+[]來實現條件判斷

  1. #語法: 
  2.     {True: <return_true>, False: <return_false>}[<condition_expression>] 
  3. #實例: 
  4.     score = 92 
  5.     print({True:'優秀',False:'良好'}[ score >= 90 ]) 
  6. #結果: 
  7.     優秀 
  8. #說明: 
  9.     在[]中寫條件語句,在()中寫返回為真和返回為假的值,一定要注意順序 

第三種,對字符串進行條件判斷 ,需要用到eval方法。

  1. #語法: 
  2.     eval("字符串判斷語句"
  3. #實例 
  4.     print('優秀' if eval("score >= 90"else '良好'
  5. #結果 
  6.     優秀 

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2020-05-18 08:42:23

CSS背景圖像前端開發

2018-08-28 12:07:42

微信數據分析

2018-03-07 09:35:08

Python淘寶數據

2024-05-20 08:25:55

2021-10-15 06:22:07

勒索軟件攻擊數據泄露

2021-10-29 11:45:26

Python代碼Python 3.

2022-05-09 11:19:12

CSS函數開源

2019-09-25 09:00:56

iPhone 11拆解蘋果

2020-06-16 08:39:35

JavaScript圖像處理庫

2023-10-16 15:41:14

WebCSS

2021-12-29 19:20:41

數據GitHub服務器

2024-06-03 11:43:55

2020-08-04 08:48:34

數據彈屏技術

2019-10-29 06:33:14

5G物聯網應用物聯網

2021-01-26 11:16:12

漏洞網絡安全網絡攻擊

2021-05-07 09:03:27

算法模型技術

2021-06-02 08:00:57

WebAsyncTas項目異步

2021-03-06 13:31:52

網絡釣魚惡意郵件攻擊

2020-11-05 11:10:43

程序員開發工具

2025-05-19 10:04:48

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91国在线 | 午夜精| 亚洲+变态+欧美+另类+精品 | 久久久九九九九 | 一级无毛片| 国产精品视频免费看 | 成人av一区二区三区 | 欧美影院 | 美女黄色在线观看 | 成人免费看黄网站在线观看 | 精品久久久久久久久久久久久久久久久 | 拍真实国产伦偷精品 | 精品久久久一区 | 日韩色图在线观看 | 国产伦精品一区二区 | 欧美一区二区在线播放 | 香蕉久久网| 一区二区在线不卡 | 亚洲精品大片 | 国产成人99久久亚洲综合精品 | 中文字幕1区2区 | 二区亚洲 | 每日更新av| 欧美人人| 国产在线麻豆精品入口 | 久久中文字幕视频 | 91 视频网站 | 2019中文字幕视频 | 国产精品国产a | 成人影院在线视频 | av一区二区三区四区 | 国产精品久久精品 | 日韩精品三区 | 亚洲一区二区三区桃乃木香奈 | 在线婷婷 | 久久久91 | 青青草一区二区 | 国产在线高清 | 日韩三级精品 | 中文字幕亚洲视频 | 91精品国产色综合久久 |