day07(數據類型的相互轉換 | 字元編碼)

来源:https://www.cnblogs.com/HZLS/archive/2019/04/19/10739093.html
-Advertisement-
Play Games

一,複習: 二,數據類型的相互轉換 三,字元編碼: ...


一,複習:

'''
1,深淺拷貝  
  ls = [1,'a',[10]]
  值拷貝:直接賦值 ls1 = ls,ls中的任何值發生改變,ls1也隨之發生改變
  
淺拷貝:通過copy()方法 ls2 = ls.copy(),ls中存放的值的地址沒有改變, 但內部的值發生改變,ls2會隨之改變

    -- ls = [1, 'a', [10]] => [1, 'a', [100]] = ls2
  深拷貝:通過deepcopy()方法 ls3 = deepcopy(ls),ls中存放的值發生任何改變,ls3都不會隨之改變
  
2.元組類型
t = tuple()
元組:
    1.就可以理解為不可變的list
    2.有序 - 可以索引取值,可以切片
    3.不可變 - 長度和內容都不能發生改變
細節:元組中可以存放所有的數據類型,所以存放可變類型數據後,可變類型依然可以發生改變

3.字典類型
d1 = {}
d2 = dict({'a': 1})
d3 = dict(name='Bob') # 所有的key都會用合法的變數名,最終轉化為字元串類型的key
d4 = {}.fromkeys('abc', 0) => {'a': 0, 'b': 0, 'c': 0}
key: 要確保唯一性,所以必須為不可變類型
value:存放可以存放的所有類型數據,所以支持所有類型
字典:1.可變 2.沒有索引,通過key取值 3.無序的
增刪改查:字典名[key名] | 字典名[key名] = 值 | update(dict) | setdefault(key, d_value) | get(key, default)
| pop(key) | popitem() | clear()
迴圈:keys() | values() | items()
for k, v in dic.items(): # (k, v)
pass

字典的成員運算:完成的就是 key 在不在 目標字典中

4.集合類型
s = set()
集合:1.可變 - 可增可刪 2.無序無索引無key - 不能取值不能改值 3.for可以對集合取值,取值的結果順序不確定
特定:不能存放重覆的數據(去重效果)

  # s1.symmetric_difference_update(s2)  # 將集合s1與s2的運算結果設置給s1

'''

二,數據類型的相互轉換

'''
 1,哪些類型可以轉化為數字
    res = int('10')
   print(res)
   res = int('-3')
   print(res)
   res = float('.15')
   print(res)
   res = float('-.15')
   print(res)
   res = float('-3.15')
   print(res)
  

 2,數字轉化字元串
   print(str(10))


 3,字元串與列表相互轉換*****

   s = 'abc123呵呵'
   print(list(s))   #['a', 'b', 'c', '1', '2', '3', '呵', '呵'] 沒有對應的 str(ls)
   ls =
['a', 'b', 'c', '1', '2', '3', '呵', '呵']
   n_s = ''.join(ls)
   print(n_s)         #abc123呵呵
  

   s1 =
'a b c 1 2 3 呵 呵'
   res = s1.split()     #預設按空格拆分
   print(res)        #['a', 'b', 'c', '1', '2', '3', '呵', '呵']

   
 #必須掌握*****
  
  列表與字元串相互轉換*****
   s2 = 'ie=UTF-8&wd=你好帥'
   res = s2.split('&')
   print(res)        
# ['ie=UTF-8', 'wd=你好帥']

    ls2 = ['ie=UTF-8','wd=你好帥']
   n_s2 = '@'.join(ls2)
   print(n_s2)        
# ie=UTF-8@wd=你好帥


 4,需求: 字元串與列表的相互轉換: "ie=UTF-8&wd=你好帥" => [('ie', 'UTF-8'), ('wd', '你好帥')]

   res = []
   s4 = "ie=UTF-8&wd=你好帥"
   ls4 = s4.split('&')      # ['ie=UTF-8', 'wd=你好帥']

   for ele in ls4:        # v = ie=UTF-8 | wd=你好帥
      k,v = ele.split('=')  # k: ie v: UTF-8
      res.append((k,v))
   print(res)           #[('ie', 'UTF-8'), ('wd', '你好帥')]
  

 5,需求:字元串與字典的相互轉換: "ie=UTF-8&wd=你好帥" => {'ie': 'UTF-8', 'wd': '你好帥'}
   res = {}
   s5 =
"ie=UTF-8&wd=你好帥"
   ls5 = s5.split('&')     # ['ie=UTF-8', 'wd=你好帥']   
   for ele in ls5:        
      k,v = ele.split('=') #k:ie v=UTF-8
      res[k] = v
   print(res)           #{'ie': 'UTF-8', 'wd': '你好帥'}


 6,需求:列表與字典的相互轉換:[('ie', 'UTF-8'), ('wd', '你好帥')] => {'ie': 'UTF-8', 'wd': '你好帥'}
   res = {}
   ls6 = [('ie', 'UTF-8'), ('wd', '你好帥')]
   for k,v in ls6:
      res[k] = v
   print(res)
  
 7,list 與taple ,set 直接轉換——直接 類型()

 
  8.需求:將漢字轉化為數字
  # 將 壹、貳、叄、肆、伍、陸、柒、捌、玖、拾、佰、仟
  # 轉化為 1、2、3、4、5、6、7、8、9、10、100、100
  ## 作業:壹仟捌佰玖拾叄 => 1893
  num_map = {
  '壹': 1,
  '貳': 2,
   '仟': 1000
  }
  ls8 =['貳', '壹', '仟']
  res = []
  for v in ls8:
    num = num_map[v]  #通過key去映射拿到對應的值,完成
'貳' => 2
    res.append(num)
  print(res)

'''

三,字元編碼:

# 測試一下
# 學習字元編碼的問題:解決亂碼問題

# 數據 從 硬碟 => 記憶體 => cpu
# 應用程式打開文本文件的三步驟 # 1.打開應用程式 # 2.將數據載入到記憶體中 # 3.cpu將記憶體中的數據直接翻譯成字元顯示給用戶 # python解釋器 # 1.打開python解釋器 # 2.將數據載入到記憶體中 # 3.cpu將記憶體中的數據解釋執行將結果顯示給用戶,如何解釋執行不能通過,將錯誤信息提供給用戶 # 編碼的發展史 # 電腦只能識別高低電頻對應的0,1信息 => 問題:如何將世間萬物信息存放到記憶體中 # 世間萬物信息 => 0,1形式的數據 => 電腦中存放,將該過程逆向操作,就是訪問已存儲的數據信息 # 編碼表 # 人能識別的字元 <=> 機器能識別的字元:一定存在一種固定的對應關係 # 編碼表:一定範圍內人能識別的字元與機器能識別的字元形成的對應關係表(映射表) # 1.ASCII表:英文字母、英文符號、數字與機器能識別的字元的對應關係表,8個二進位位就能存放完這所有的對應關係 => 1位元組 # python2採用的預設編碼是ASCII,早期並不支持中文編程 # 2_1.GBK:中文與與機器能識別的字元的對應關係表(完全相容ASCII表),16個二進位位能存放所有漢字與ASCII之前的對應關係 => 2個位元組 # 2個位元組能否存放常用漢字 => 16個二進位位 2^15 # print(pow(2, 15)) # 2_2.Shift_JIS | Euc-kr:日文 | 韓文 與機器能識別的字元的對應關係表(完全相容ASCII表) # 亂碼:存的編碼格式與取的編碼格式不一致 # 3.Unicode萬國碼:世間中常用國家的常用字元與機器能識別的字元的對應關係表 # 轉碼:Unicode存在漢字與二進位對應關係,GBK也存在漢字與二進位對應關係,將GBK存放的數據轉存到Unicode數據 # 均採用Unicode編碼表,只是存放數據採用位元組數不一致,utf-8與utf-16是Unicode編碼表的兩種體現方式

# utf-8:以1個位元組存放英文,以3 | 6個位元組存放漢字,在英文數據過多時,更深空間,用來傳輸效率更高 # utf-16:所有支持的符號都採用2個位元組存放,讀存數據採用定長,不用計算,讀存效率高 # 硬碟到記憶體需要數據的傳輸,記憶體到CPU需要數據的傳輸,所有都採用utf-8 # 記憶體需要高速讀寫,採用utf-16 # 學習的結晶:編碼與解碼要統一編碼 # 操作文本字元 res = "漢字呵呵".encode('utf-8') # 編碼:將普通字元串轉化為二進位字元串 print(res) res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('GBK') # 解碼:將二進位字元串轉化為普通字元串 print(res) res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('utf-8') print(res)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目文件 01_QtTest.pro 頭文件 mywidget.h 源文件 main.cpp mywidget.cpp 結果顯示 ...
  • 這是最後一條NLP了......來吧 十二,動機和情緒總不會錯,只是行為沒有效果而已 動機在潛意識裡,總是正面的。潛意識從來不會傷害自己,只會誤會的以為某行為可以滿足該動機,而又不知道有其他做法的可能。 情緒總是給我們一份推動力,情緒使我們在該事情之中有所學習,學到了,情緒便會消失。 我們可以接受一 ...
  • 一.Spring概述 Spring是一個JavaEE輕量級的一站式 Java EE的開發框架。 1. Spring是一個一站式的企業級(JavaEE)開發框架,意味著,僅僅使用一個Spring框架就可以滿足JavaEE開發的表示層,服務層,持久層的開發。 2. Spring強調的理念是,輕量級。意味 ...
  • 一、spring簡介 Spring是一個JavaEE輕量級的一站式的開發框架(spring的可插拔特性,企業用於整合其他框架)輕量級:使用最少的代碼啟動程式,根據所需選擇功能選擇模塊使用一站式:提供了表示層,服務層,持久層的所有支持(功能齊全) 二、spring框架的優點 優秀的架構標準: 1.可維 ...
  • [TOC] 開始編寫球隊代碼 裝好了Robocup 3D比賽平臺後,就要開始著手編寫球隊策略代碼了。 我們使用的是utaustinvilla的Robocup 3D球隊代碼,球隊的體態運動等都已經是別人寫好的,我們暫時不要研究。 在下圖中,behaviors文件夾下的strategy.cc文件,就是我 ...
  • 同源策略 如果兩個頁面的協議,埠(如果有指定)和功能變數名稱都相同,則兩個頁面具有相同的源。 示例:兩個Django demo demo1 url.py view.py demo2 url.py view.py demo.html <body> <button id="btn">點擊</button> < ...
  • 一:三元計算(三目計算) 二:函數的基本認識 1.函數式編程: - 本質:將N行代碼拿到別處並給他起個別名,以後通過名字就可以找到這行代碼並執行 - 場景:1.代碼重覆執行 2.代碼量特別多超過一屏,可以通過函數進行代碼的分割 2.函數的基本結構 3.函數參數: 定義一個函數:給了函數一個名稱,指定 ...
  • 一:模塊的基本認識: 內置模塊是python自帶的功能,在使用內置模塊相應功能時,需要先導入再使用 下載-->安裝-->使用 1.找到python所在的根目錄-->再找到Scripts目錄-->最後找到pip.exe 2.把pip.exe所在的目錄添加到環境變數中 3.pip install 要安裝 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...