Python3 與 C# 基礎語法對比(List、Tuple、Dict專欄)

来源:https://www.cnblogs.com/dunitian/archive/2018/06/08/9156097.html
-Advertisement-
Play Games

Python3 與 C# 基礎語法對比(基礎知識場):https://www.cnblogs.com/dunitian/p/9103673.html Python3 與 C# 基礎語法對比(String專欄):https://www.cnblogs.com/dunitian/p/9119986.ht ...


Python3 與 C# 基礎語法對比(基礎知識場):https://www.cnblogs.com/dunitian/p/9103673.html

Python3 與 C# 基礎語法對比(String專欄):https://www.cnblogs.com/dunitian/p/9119986.html

彩色最新版:https://www.cnblogs.com/dotnetcrazy/p/9155310.html

今天說說List和Tuple以及Dict。POP部分還有一些如Func、IO(也可以放OOP部分說)然後就說說面向對象吧。

先吐槽一下:Python面向對象真心需要規範,不然太容易走火入魔了 -_-!!! 汗,下次再說。。。

對比寫作真的比單寫累很多,希望大家多捧捧場 ^_^

步入正題:


 

1.列表相關:

Python定義一個列表(列表雖然可以存不同類型,一般我們把相同類型的值存列表裡面,不同類型存字典里(key,value)) info_list=[] #空列表 infos_list=["C#","JavaScript"]

遍歷和之前一樣,for 或者 while 都可以(for擴展:https://www.cnblogs.com/dotnetcrazy/p/9102030.html#forelse

NetCorevar infos_list = new List<object>() { "C#", "JavaScript" };

遍歷可以用foreach,for,while


Python列表的添加

末尾追加 infos_list.append("Java")添加一個列表 infos_list.extend(infos_list2) # 指定位置插入 infos_list.insert(0,"Python") 插入列表:infos_list.insert(0,temp_list)   看後面的列表嵌套,是通過下標方式獲取,eg: infos_list[0][1]

Python在指定位置插入列表是真的插入一個列表進去,C#是把裡面的元素挨個插入進去

NetCore:Add,AddRange,Insert,InsertRange (和Python插入列表有些區別)


Python列表刪除系列

infos_list.pop() #刪除最後一個 infos_list.pop(0) #刪除指定索引,不存在就報錯 infos_list.remove("張三") # remove("")刪除指定元素,不存在就報錯

del infos_list[1] #刪除指定下標元素,不存在就報錯 del infos_list #刪除集合(集合再訪問就不存在了)不同於C#給集合賦null

再過一遍

NetCore移除指定索引:infos_list.RemoveAt(1); 移除指定值: infos_list.Remove(item); 清空列表: infos_list.Clear();


Python修改:(只能通過索引修改)

infos_list2[1]="PHP" #只有下標修改一種方式,不存在則異常 # 想按值修改需要先查下標再修改 eg: infos_list2.index("張三") infos_list2[0]="GO" # infos_list2.index("dnt")#不存在則異常

# 知識面拓展:https://www.zhihu.com/question/49098374 # 為什麼python中不建議在for迴圈中修改列表? # 由於在遍歷的過程中,刪除了其中一個元素,導致後面的元素整體前移,導致有個元素成了漏網之魚。 # 同樣的,在遍歷過程中,使用插入操作,也會導致類似的錯誤。這也就是問題里說的無法“跟蹤”元素。 # 如果使用while,則可以在面對這樣情況的時候靈活應對。

NetCore:基本上和Python一樣


Python查詢系列:in, not in, index, count

if "張三" in names_list:   names_list.remove("張三") if "大舅子" not in names_list:   names_list.append("大舅子") names_list.index("王二麻子") names_list.count("逆天")

NetCoreIndexOf , Count

查找用Contains,其他的先看看,後面會講


Python排序 

num_list.reverse() # 倒序 num_list.sort() # 從小到大排序 num_list.sort(reverse=True) 從大到小

列表嵌套,獲取用下標的方式:num_list[5][1]

NetCorevar num_list2 = new List<object>() { 33, 44, 22,new List<object>(){11,55,77} };

不能像python那樣下標操作,可以定義多維數組來支持 num_list2[i][j] (PS,其實這個嵌套不太用,以後都是列表裡面套Dict,類似與Json)

2.Tuple 元組

這次先說NetCore吧:(逆天ValueTuple用的比較多,下麵案例就是用的這個)

元組系:https://msdn.microsoft.com/zh-cn/library/system.tuple.aspx 值元組:https://msdn.microsoft.com/zh-cn/library/system.valuetuple.aspx   C#中元組主要是方便程式員,不用自然可以。比如:當你返回多個值是否還用ref out 或者返回一個list之類的? 這些都需要先定義,比較麻煩.元祖在這些場景用的比較多。先說說基本使用:   初始化:var test_tuple = ("萌萌噠", 1, 3, 5, "加息", "加息"); //這種方式就是valueTuple了(看vscode監視信息) 需要說下的是,取值只能通過itemxxx來取了,然後就是valueTuple的值是可以修改的 忽略上面說的(一般不會用的),直接進應用場景: 就說到這了,代碼部分附錄是有的   Python:用法基本上和列表差不多 定義:一個元素:test_tuple1=(1,)   test_tuple=("萌萌噠",1,3,5,"加息","加息") test_tuple.count("加息") test_tuple.index("萌萌噠") #沒有find方法 test_tuple.index("加息", 1, 4) #從特定位置查找,左閉右開區間==>[1,4) 來說說拆包相關的,C#的上面說了,這邊來個案例即可: a=(1,2) b=a #把a的引用給b c,d=a #不是把a分別賦值給c和d,等價於:c=a[0] d=a[1]
3.Dict系列

Python遍歷相關

#每一次相當於取一個元組,那可以用之前講的例子來簡化了:c,d=a #等價於:c=a[0] d=a[1]

for k,v in infos_dict.items():   print("Key:%s,Value:%s"%(k,v))

 

NetCore:方式和Python差不多

foreach (KeyValuePair<string, object> kv in infos_dict) {   Console.WriteLine($"Key:{kv.Key},Value:{kv.Value}"); }

 


Python增刪改系列:

增加、修改infos_dict["wechat"]="dotnetcrazy" #有就修改,沒就添加

刪除系列

# 刪除 del infos_dict["name"] #不存在就報錯 #清空字典內容 infos_dict.clear() # 刪除字典 del infos_dict

NetCore

添加:infos_dict.Add("wechat", "lll");  infos_dict["wechat1"] = "lll"; 修改infos_dict["wechat"] = "dotnetcrazy";   刪除infos_dict.Remove("dog"); //不存在不報錯  infos_dict.Clear(); //列表內容清空

 


Python查詢系列推薦infos_dict.get("mmd") #查不到不會異常


 NetCoreinfos_dict["name"] 可以通過 ContainsKey(key) 避免異常。看值就 ContainsValue(value)

附錄Code:

Python List:

View Code

Python Tuple:

View Code

Python Dict:

View Code

NetCore List:

View Code

NetCore Tuple:

View Code

NetCore Dict:

View Code

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

-Advertisement-
Play Games
更多相關文章
  • 原理知識準備 對於已經熟悉了session原理的同學來說,我們都清楚:在瀏覽器端我們會存儲一個sessionId,用它來作為憑證,在伺服器端得到有關本次瀏覽器與伺服器會話的所有信息,這些信息是儲存在伺服器端的存儲空間中的,它完全可以用來判斷一個瀏覽器端的登錄狀態,因為它是由伺服器端來掌控的,是安全的 ...
  • 前段時間我有一個朋友面試公司的時候遇到這個面試題,他也給了份原題給我瞧瞧,並沒有什麼特別的要點,關於這一類問題,如何在網格上的單元格嵌入多個控制項(如按鈕、超鏈接等)問題,我在網上搜索了下這類問題,發現很多解答但是都雜亂,本篇文章幫助大家瞭解如何應對這類問題。 微軟提供的DataGirdView網格控 ...
  • 百度百科 冒泡排序是筆試面試經常考的內容,雖然它是這些演算法里排序速度最慢的 原理:從頭開始,每一個元素和它的下一個元素比較,如果它大,就將它與比較的元素交換,否則不動。 這意味著,大的元素總是在向後慢慢移動直到遇到比它更大的元素。所以每一輪交換完成都能將最大值 冒到最後。 原出處:https://w ...
  • 一款用C#開發的APP開源項目。這款開源項目名為SmoSec,目前包含資產管理、耗材管理兩大類。並且,未來會不斷迭代,持續增加盤點、標簽列印和倉庫管理等功能。 ...
  • 公司用了一臺發卡機,usb介面,半雙工,給了個dll,不支持線程操作,使得UI線程老卡。 懊惱了,想自己直接通過usb讀寫,各種百度,然後是無數的坑,最終搞定。 現將各種坑和我自己的某些猜想記錄一下,也供各位參考。 一、常量定義 主要用於CreateFile時用。 二、結構、枚舉、類定義 都是從各種 ...
  • 使用.Net Core 2.1開發Captcha驗證碼服務 開發工具:Visual Studio 2017 15.7.3 開發平臺:64位 Windows 10 目標框架:.NET Core 2.1 完成度:已實現 Github地址: "https://github.com/PuzzledAlien ...
  • 哪些因素可能會導致損壞? 損壞的原因也各不相同,包括但不限於 無法讀取/寫入存儲介質 程式發生崩潰(特別是在數據寫入 RVT 模型時) 附加模塊以通過正常 UI 無法或意外的方式修改圖元 未經測試的多項操作或一系列操作(例如,取消同步或在同步後使用“撤消”命令) 解決方案: 要最大程度地減少數據損壞 ...
  • 新手上路,老司機請多多包含!Ocelot 在博園裡文章特別多,但是按照其中一篇文章教程,如果經驗很少或者小白,是沒法將程式跑向博主的結果. 因此總結下 參考多篇文章,終於達到預期效果。 Ocelot 目標是使用.NET運行微服務/面向服務架構,我們需要一個統一的入口進入我們的服務,提供監控、鑒權、負 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...