基礎數據類型補充以及二次編碼

来源:https://www.cnblogs.com/tutougold/archive/2019/07/12/11178657.html
-Advertisement-
Play Games

基礎數據類型補充以及二次編碼 一.基礎數據類型補充 1.字元串(str) 首字母大寫 每個單詞首字母大寫 大小寫反轉 居中 填充 查找(從左向右,之查找一個) 拼接 格式化 2.列表 定義方式 list(可迭代對象) + 元素都是共用的 排序(預設升序) 降序 反轉 面試題 3.元組 4.字典 定義 ...


基礎數據類型補充以及二次編碼

一.基礎數據類型補充

1.字元串(str)

  • 首字母大寫
# .capitalize()
name = "meet"
s = name.capitalize()
print(s)     #Meet
  • 每個單詞首字母大寫
# .title()
name = "meet alex"
s = name.title()
print(s)    #Meet Alex
  • 大小寫反轉
# .swapcase()
name = "MeeT"
s = name.swapcase()
print(s)    #mEEt
  • 居中--填充
# .center()
name = "meet"
s = name.center(10,"*")
print(s)    #***meet***
  • 查找(從左向右,之查找一個)
# .find()   .index()
name = "meet"
s = name.find("e")
print(s)     #1       #find查找不存在的就返回-1

s = name.index("t")
print(s)     #3       #index查找不存在的就報錯
  • 拼接
# .join()
name = ["meet","alex"]
s = "_".join(name)        #拼接符.join(可迭代對象)
print(s)     #meet_alex   
  • 格式化
1.%s
2.f
3.name.format()
  按照索引位置進行填充
    name = "alex{},{}"
    print(name.format(1,2))    # alex1,2
  按照索引值進行填充
    name = "alex{1},{0}"
    print(name.format("a","b"))  #alexb,a
  按照關鍵字進行填充
    name = "alex{a},{b}"
    print(name.format(a=1,b=2))  #alex1,2

2.列表

定義方式 list(可迭代對象) + * 元素都是共用的

  • 排序(預設升序)
# lst.sort()
lst = [1,5,3,2,4]
lst.sort()
print(lst)    #[1, 2, 3, 4, 5]
  • 降序
# lst.sort(reverse=True)
lst = [1,2,3,4,5]
lst.sort(reverse=True)
print(lst)   #[5, 4, 3, 2, 1]
  • 反轉
# lst.reverse()
lst = [1,2,3,4,5]
lst.reverse()
print(lst)       #[5,4,3,2,1]
print(lst::-1)   #[5,4,3,2,1]
  • 面試題
lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst)     #[[10], [10], [10], [10], [10]]
     
lst = [1,[]]
new_lst = lst * 5
new_lst[0] = 10
print(new_lst)    #[10, [], 1, [], 1, [], 1, [], 1, []]

lst = [1,[]]
new_lst = lst * 5
new_lst[1] = 10
print(new_lst)   #[1, 10, 1, [], 1, [], 1, [], 1, []]

lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst)   #[[10], [10], [10], [10], [10]]

合併列表
方式一:
lst = [1,2,3]
lst1 = [4,5,6]
lst.extend(lst1)
print(lst)       #[1,2,3,4,5,6]
方式二:
lst = [1,2,3]
lst1 = [4,5,6]
print(lst + lst1) #[1,2,3,4,5,6]

3.元組

tu = ("1")    ()中的數據類型是數據本身
tu = (1,)     --元組

元組可以 + *   不可變的共用,可變的也共用

4.字典

定義一個字典: dict(k = 1,k1 = 2)

# 隨機刪除
dic.popitem()   
print(dic.popitem())    --返回的是被刪除的鍵值對

# 批量添加鍵值對   鍵是可迭代對象,值是共用的
dict.fromkeys()

dic = {}
dic.fromkeys("123",[23]) 
print(dic)     # {}

dic = {}
print(dic.fromkeys("123",[23]))  
              #{'1': [23], '2': [23], '3': [23]}


5.集合

空集合--  set()     
空字典--{}

定義集合:    set("alex")  #{'a', 'e', 'l', 'x'}  迭代添加的

6.布爾值

False:
數字:0
字元串:""
列表:[]
元組:()
字典:{}
集合:()
其他:None
    

二.數據類型之間的轉換

# 元組轉列表(tuple --> list)
  list(tuple)

# 列表轉元組(list --> tuple)
  tuple(list)

#字元串轉列表(str --> list)
   s = "abc"
   s1 = s.split(" ")
   print(s1)    #['abc']
    
#列表轉字元串(list --> str)
   s = ["abc"]
   print("".join(s))  #abc

#字典轉字元串(dict --> str)
  dic = {"a":1,"b":2}
  print(str(dic))    #{'a': 1, 'b': 2}
   
#集合轉列表(set --> list)
  set = {"a",1}
  print(list(set))   #[1, 'a']

#列表轉集合(list --> set)
  lst = [1,2,3]
  print(set(lst))   #{1,2,3}

python數據類型

可變:list,dict,set
    
不可變:int,bool,str,tuple
 
有序:list,tuple,str,int,bool

無序:dict,set

取值方式:
索引取值:str,list,tuple
直接取值:set,int,bool
用鍵取值:dict

三.會遇到的坑

#列表刪除:從後向前刪除
#        創建一個新的列表,刪除舊的列表

#字典刪除:迴圈的時候不能改變源數據的大小(可以改變值)
#       創建一個新的字典,刪除舊的字典

#集合刪除:迴圈的時候不能改變源數據的大小

lst = [1,2]
for i in lst:
    lst.append(3)
print(lst)            #死迴圈

刪除列表的坑:
    
lst = [1,2,3,4]
for i in lst:
    lst.pop()
print(lst)           #[1,2]

lst = [1,2,3,4]
for i in lst:
    lst.pop(0)
print(lst)          #[3,4]

lst = [1,2,3,4]
for i in lst:
    lst.remove(i)
print(lst)          #[2,4]

成功刪除的方式:
lst = [1,2,3,4]
for i in range(len(lst)):
    lst.pop()
print(lst)          #[]

lst = [1,2,3,4]
for i in range(len(lst)-1,-1,-1)
    del lst[i]
print(lst)          #[]

lst = [1,2,3,4]
for i in range(len(lst)):
    del lst[-1]
print(lst)         #[]

lst = [1,2,3,4]
lst1 = lst.copy()
for i in lst1:
    lst.remove(i)
print(lst)         #[]


刪除字典的坑:       #字典的迭代會改變原來的大小(不能加不能刪)
dic = dict.fromkeys("12345",1)  
for i in dic:
    dic[i] = "123"
print(dic)    
       #{'1': '123', '2': '123', '3': '123', '4': '123', '5': '123'}
    
dic = dict.fromkeys("12345",1)
dic1 =dic.copy()
for i in dic1:
    dic.pop(i)
print(dic)        #{}

#集合和字典都是迭代的時候不能改變原來的大小

四.二次編碼

ascii --沒有中文

gbk --英文8b(位) 1B(位元組) 中文16b 2B

Unicode -- 英文16b 2B 中文 32b 4B

utf-8 -- 英文8b 1B 歐洲16b 2B 亞洲24b 3B

encode()  --編碼    decode() --解碼

name = "你好啊"
s1 = name.encode("utf-8")   # 編碼  
s2 = s1.decode("utf-8")     #解碼
print(s2)
s2 = name.encode("gbk")     # 編碼      
print(s2.encode("gbk"))     #解碼

# 以什麼編碼集(密碼本)進行編碼就要用什麼編碼集(密碼本)解碼

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

-Advertisement-
Play Games
更多相關文章
  • 根據鍵盤錄入的行數和列數,在控制台輸出星形: 結果: 註意: 1.該案例無返回值類型,用void來表示(return可省略) 2.單獨調用即可 輸出調用(錯誤) 賦值調用(錯誤) ...
  • 一、FastDFS簡介 1、FastDFS作用 FastDFS是一個開源的輕量級分散式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件上傳、文件下載等,解決了大容量存儲和負載均衡的問題。 安裝連接: "安裝流程詳解" 2、核心角色 FastDFS是由跟蹤伺服器(trackerserve ...
  • 鍵盤錄入兩個整數判斷他們是否相等: 結果: ...
  • 背景 最近工作上有個類似需求是: 現有約3億條數據詞典存在於一個csv文件A中,作為數據源。對於 用戶輸入的任意單詞M,需要快速的在A中匹配M單詞是否存在。(A文件約3G大小左右,總行數三億) 拿到這個需求,你的第一想法怎麼做呢? 正常思路可能是: 上面的方式有個明顯的缺點是:慢! 3億多行的數據, ...
  • 鍵盤錄入兩個數據,返回兩個數中的較大值: 結果: ...
  • 按照Laravel文檔的安裝方式在windows上安裝Laravel時,執行composer global require "laravel/installer"。 然後命令行就顯示Changed current directory to C:/Users/Administrator/AppData ...
  • 花下貓語:本文是學習群內 櫻雨樓 小姐姐的投稿。之前已發佈過她的一篇作品《 "當談論迭代器時,我談些什麼?" 》,大受好評。本文依然是對比 C++ 與 Python,來探討編程語言中極其重要的概念。祝大家讀有所獲,學有所成! 櫻雨樓 | 原創作者 豌豆花下貓 | 編輯潤色 本文原創並首發於公眾號【 ...
  • 1.方法優勢: 提高代碼的復用性 2.什麼是方法: 完成特定功能的代碼塊。 3.方法的格式: 修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2...) { 方法體語句; return 返回值; } 4.方法的格式說明: 修飾符:目前就用 public static。後面我們再詳細的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...