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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...