python總結(1)

數據結構是以某種方式(如通過編號)組合起來的數據元素(如數、字符乃至其他數據結構)集合。在Python中,最基本的數據結構為序列(sequence)。序列中的每個元素都有編號,即其位置或索引,其中第一個元素的索引為0,第二個元素的索引為1,依此類推。在有些編程語言中,從1開始給序列中的元素編號,但從0開始指出相對于席列開頭的偏移量。這顯得更自然,同時可回繞到序列未尾,用負索引表示序列未尾元素的位置。序列是對列表和元組的有序數據結構的一種更高層次的抽象。

首先對序列進行概述,然后介紹一些適用于所有序列(包括列表和元組)的操作。這些操作也適用于一些示例中將使用的字符串,后面將全面介紹字符串操作。討論這些基本知識后,將著手介紹列表,看看它們有什么特別之處,然后討論元組。元組是一種特殊的序列,類似于列表,只是不能修改。其它編程語言似乎嗎似乎沒有元組這個概念。python引進元組后,很多代碼都可以寫得更加優雅和簡潔。

列表和元組的主要不同在于,列表是可以修改的,而元組不可以。這意味著列表適用于需要中途添加元素的情形,而元組適用于出于某種考慮需要禁止修改序列的情形。禁止修改序列通常出于技術方面的考慮,與Python的內部工作原理相關,這也是有些內置函數返回元組的原因所在。在你自己編寫程序時,幾乎在所有情況下都可使用列表來代替元組。一種例外情況是將元組用作字典鍵。在這種情況下不能使用列表來代替元組,因為字典鍵是不允許修改的。在需要處理一系列值時,序列很有用。在數據庫中,你可能使用序列來表示人,其中第一個元素為姓名,而第二個元素為年齡。如果使用列表來表示(所有元素都放在方括號內,并用逗號隔開),將類似于下面這樣:

edward = ["edware gummy", 45]john = ["john smith", 42]database = [edward, john]print(database)

因為python的變量是類似于java的引用,占用的空間是固定大小的,所以列表中放不同的類型也不會引起問題。

Python支持一種數據結構的基本概念,名為容器(container)。容器基本上就是可包含其他對象的對象。兩種主要的容器是序列(如列表和元組)和映射(如字典)。在序列中,每個元素都有編號,而在映射中,每個元素都有名稱(也叫鍵)。映射將在第4章詳細討論。有一種既不是序列也不是映射的容器它就是集合(set)。有其它語言基礎的同學可以進行類比記憶。

通用的序列操作

有幾種操作適用于所有序列,包括索引、切片、相加、相乘和成員資格檢查。另外,Python還提供了一些內置函數,可用于確定序列的長度以及找出序列中最大和最小的元素。還有一個重要的操作,它就是迭代(iteration)。對序列進行迭代意味著對其每個元素都執行特定的操作。

列表:Python的主力

列表很有用,但本節主要討論列表不同于元組和字符串的地方列表是可變的,即可修改其內容。另外,列表有很多特有的方法。

函數list

鑒于不能像修改列表那樣修改字符串,因此在有些情況下使用字符串來創建列表很有幫助。為此,可使用函數list。

 list('Hello’)['h', 'e', 'l', 'l', 'o']

請注意,可將任何序列(而不僅僅是字符串)作為list的參數。

提示 要將字符列表(如前述代碼中的字符列表)轉換為字符串,可使用下面的表達式:

join(somelist)

其中somelist是要轉換的列表。

元組:不可修改的序列

與列表一樣,元組也是序列,唯一的差別在于元組是不能修改的(你可能注意到了,字符串也不能修。元組語法很簡單,只要將一些值用逗號分隔,就能自動創建一個元組。

>>> 1, 2,3(1,2,3)

如你所見,元組還可用圓括號括起(這也是通常采用的做法)

>>>(1,23)(1.23)

空元組用兩個不包含任何內容的圓括號表示。

>>>()

你可能會問,如何表示只包含一個值的元組呢?這有點特殊:雖然只有一個值,也必須在它后面加上逗

>>> 4242>>>42,(42,)>>>(42,)(42,)

最后兩個示例創建的元組長度為1,而第一個示例根本沒有創建元組。逗號至關重要,僅將值用圓括號括起不管用:(42)與42完全等效。但僅僅加上一個逗號,就能完全改變表達式的值。

>>>3*(40 + 2)126>>> 3*(40 + 2,)(42,4242)

函數tuple的工作原理與list很像:它將一個序列作為參數,并將其轉換為元組曲。如果參數已經是元組,就原封不動地返回它,

>>>tuple([1,2,3])(1,2,3)>>>tuple('abc’)('a','b','c')tuple((1,2,3)(1,2,3)

你可能意識到了,元組并不太復雜,而且除創建和訪問其元素外,可對元組執行的操作不多。元組的創建及其元素的訪問方式與其他序列相同,

>>> x=123>>>x[1]2>>>x[0:2](1,2)

元組的切片也是元組,就像列表的切片也是列表一樣。為何要熟悉元組呢?原因有以下兩個

口 它們用作映射中的鍵(以及集合的成員),而列表不行。

口 有些內置函數和方法返回元組,這意味著必須跟它們打交道。只要不嘗試修改元組,與元組“打交道”通常意味著像處理列表一樣處理它們(需要使用元組沒有的index和count等方法時例外)

一般而言,使用列表足以滿足對序列的需求。

小結

下面來回顧一下介紹的一些最重要的概念。

口 序列:序列是一種數據結構,其中的元素帶編號(編號從0開始)。列表、字符串和元組都屬于序列,其中列表是可變的(你可修改其內容),而元組和字符串是不可變的(一旦創建,內容就是固定的)。要訪問序列的一部分,可使用切片操作:提供兩個指定切片起始和結束位置的索引。要修改列表,可給其元素賦值,也可使用賦值語句給切片賦值。

口 成員資格:要確定特定的值是否包含在序列(或其他容器)中,可使用運算符in。將運算符in用于字符串時情況比較特殊-----這樣可查找子串。

口方法:一些內置類型(如列表和字符串,但不包括元組)提供了很多有用的方法。方法有點像函數只是與特定的值相關聯。方法是面向對象編程的一個重要方面。

圖片1新函數總結

在這里插入圖片描述

創建和使用字典

字典以類似于下面的方式表示:

phonebook={Alice : 2341’,'Beth':'9102''Cecil':'3258}

字典由鍵及其相應的值組成,這種鍵-值對稱為項(item)。在前面的示例中,鍵為名字,而值為電話號碼。每個鍵與其值之間都用冒號(:)分隔,項之間用逗號分隔,而整個字典放在花括號內。空字典(沒有任何項)用兩個花括號表示,類似于下面這樣:。注意 在字典(以及其他映射類型)中,鍵必須是獨一無二的,而字典中的值無需如此。

函數dict

可使用函數dict從其他映射(如其他字典)或鍵-值對序列創建字典。

>>>items = [('name,Gumby'),('age’,42)]>>>d= dict(items){age:42,name:'Gumby'}>>>d [name ]Gumby

還可使用關鍵字實參來調用這個函數,如下所示:

>>>d= dict(name=’Gumby’, age=42)>>>d{'age’: 42,'name’: 'Gumby'}

盡管這可能是函數dict最常見的用法,但也可使用一個映射實參來調用它,這將創建一個字典,其中包含指定映射中的所有項。像函數list、tuple和str一樣,如果調用這個函數時沒有提供任何實參,將返回一個空字典。從映射創建字典時,如果該映射也是字典(畢競字典是Python中唯一的內置映射類型),可不使用函數dict,而是使用字典方法copy。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72968.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NAT NAPT

NAT NAT(Network Address Translation,網絡地址轉換) 主要用于在不同網絡(如私有網絡和公共互聯網)之間進行 IP 地址轉換,解決IP 地址短缺問題,并提供一定的安全性。 IPv4 地址是 32 位&#xf…

快速排序(二叉樹的前序遞歸遍歷思想)

思路 之前我們從選擇排序,到選擇排序的穩定性優化,到冒泡排序,到插入排序,到插入排序的提前截止時間,到希爾排序,雖然逐步一直都在優化,但是時間復雜度還是N得平方,力扣提交的結果一…

Redis 面試篇

Redis相關面試題 緩存三劍客 面試官:什么是緩存穿透 ? 怎么解決 ? 緩存穿透是指查詢一個一定不存在的數據,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到 DB 去查詢,可能導致 DB 掛掉。這種情況…

群暉DS223 Docker搭建為知筆記

群暉DS223 Docker搭建為知筆記,打造你的專屬知識寶庫 一、引言 在數字化信息爆炸的時代,筆記軟件成為了我們管理知識、記錄靈感的得力助手。為知筆記,作為一款專注于工作筆記和團隊協作的云筆記產品,以其豐富的功能和便捷的使用體…

Linux網絡之數據鏈路層協議

目錄 數據鏈路層 MAC地址與IP地址 數據幀 ARP協議 NAT技術 代理服務器 正向代理 反向代理 上期我們學習了網絡層中的相關協議,為IP協議。IP協議通過報頭中的目的IP地址告知了數據最終要傳送的目的主機的IP地址,從而指引了數據在網絡中的一步…

分類評價指標

基礎概念解釋 TP、TN、FP、FN 這里T是True,F是False,P為Positive,N為Negative TP:被模型正確地預測為正樣本(原本為正樣本,預測為正樣本) TN:被模型正確地預測為負樣本&#xff0…

LeetCode 哈希章節

簡單 1. 兩數之和 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案,并且你不能使用兩次相同的元素。 你可以按任意順序返…

WLAN(無線局域網)安全

WLAN安全涉及到保護無線局域網免受各種威脅和攻擊,以確保數據的保密性、完整性和可用性。以下是關于WLAN安全的多方面介紹: 一、主要安全威脅 竊聽:攻擊者利用特殊設備監聽無線信號,獲取傳輸中的數據,如用戶的賬號密…

江科大51單片機筆記【11】AT24C02(I2C總線)

一、存儲器 1.介紹 RAM的特點是存儲速度特別快,但是掉電會丟失;ROM的特點是存儲速度特別慢,但是掉電不會丟失 SRAM是所有存儲器最快的,一般用于電腦的CPU高速緩存,容量相對較少,成本較高;DRAM…

【C++指南】一文總結C++類和對象【中】

🌟 各位看官好,我是egoist2023! 🌍 種一棵樹最好是十年前,其次是現在! 🚀 今天來學習C類和對象的語法知識。注意:在本章節中,小編會以Date類舉例 👍 如果覺得…

PgSql 操作技巧

1、查詢數據導出csv數據 \COPY (SELECT w.* from t_sys_warn w ) TO /home/cuadmin/warn_output.csv WITH CSV HEADER;2、導出sql Insert語句 pg_dump -U 用戶名 -h 主機名 -p 端口號 -d 數據庫名 --inserts -t 表名 > 導出文件.sqlpg_dump -U username -d dbname -t tabl…

Unity ES3保存類的問題

有以下一個物品類 public class Item_Base//基礎物品 { public string ID; private Attribute_Data Item_attribute new(); } 當使用ES3保存這個類時,Item_attribute的數據不會被保存,因為它是私有private ES3保存類時,只會保存…

react基本功

useLayoutEffect useLayoutEffect 用于在瀏覽器重新繪制屏幕之前同步執行代碼。它與 useEffect 相同,但執行時機不同。 主要特點 執行時機:useLayoutEffect 在 DOM 更新完成后同步執行,但在瀏覽器繪制之前。這使得它可以在瀏覽器渲染之前讀取和修改 DOM,避免視覺上的閃爍…

Spring Boot筆記(上)

01 概要 Spring Boot 是 Java 領域最流行的 快速開發框架,專為簡化 Spring 應用的初始搭建和開發而設計。 一、Spring Boot 解決了什么問題? 傳統 Spring 痛點 ? 繁瑣的 XML 配置 ? 需要手動管理依賴版本 ? 部署依賴外部 Web 服務器(如 …

目標檢測YOLO實戰應用案例100講-基于毫米波雷達的多目標檢測 (續)

目錄 3.2 改進的CFAR目標檢測算法 3.3 算法步驟描述 3.4 實驗結果與分析 基于VGG16-Net的毫米波雷達目標檢測算法 4.1 VGG16-Net網絡模型 4.2 改進VGG16-Net網絡的目標檢測算法 4.3 算法步驟描述 4.4 實驗結果與分析 知識拓展 基于毫米波雷達的多目標檢測:使…

gitsubtree怎么添加新的子倉庫

要使用 git subtree 添加一個新的子倉庫&#xff0c;可以按照以下步驟操作&#xff1a; 1. 添加子倉庫 使用 git subtree add 命令將子倉庫的內容添加到主倉庫的指定目錄中。命令格式如下&#xff1a; git subtree add --prefix<子目錄路徑> <子倉庫地址> <子…

文本轉語音-音畫適時推送rtsp并播放

文本語音 rtsp適時播放叫號系統的底層邏輯 發布Linux, unix socket 和window win32做為音頻源的 python10下的(ffmpeg version 7.1) 可運行版本. 這兩天在弄這個&#xff0c;前2篇是通過虛擬聲卡&#xff0c;達到了最簡單的一個邏輯&#xff0c;播放文本就從聲卡發聲&#xff0…

從0開始的操作系統手搓教程33:掛載我們的文件系統

目錄 代碼實現 添加到初始化上 上電看現象 掛載分區可能是一些朋友不理解的——實際上掛載就是將我們的文件系統封裝好了的設備&#xff08;硬盤啊&#xff0c;SD卡啊&#xff0c;U盤啊等等&#xff09;&#xff0c;掛到我們的默認分區路徑下。這樣我們就能訪問到了&#xff…

【圖片批量轉換合并PDF】多個文件夾的圖片以文件夾為單位批量合并成一個PDF,基于wpf的實現方案

項目背景: 多個圖片分布在不同文件夾,如何以文件夾為單位批量合并成一個PDF,還要保證文件夾里面圖片大小和順序 實現功能: 1、單張圖片的轉換PDF:一張圖臨時轉一下 2、多張圖片轉換成PDF:多張圖單獨轉成PDF 3、多級目錄多張圖轉換成PDF:多級目錄多張圖單獨轉成多個PDF…

如何用Kimi生成PPT?秒出PPT更高效!

做PPT是不是總是讓你頭疼&#xff1f;&#x1f629; 快速制作出專業的PPT&#xff0c;今天我們要推薦兩款超級好用的AI工具——Kimi 和 秒出PPT&#xff01;我們來看看哪一款更適合你吧&#xff01;&#x1f680; &#x1f947; Kimi&#xff1a;讓PPT制作更輕松 Kimi的生成效…