【Python基礎入門系列】第07天:Python 數據結構--序列

python內置序列類型最常見的是列表,元組和字符串。(序列是python中最基礎的數據結構,而數據結構是計算機存儲,組織數據的方式。)

另外還提供了字典和集合的數據結構,但他們屬于無順序的數據集合體,不能像前者通過位置索引來訪問數據。python序列中的每個元素都有一個序號(元素的具體位置),這個序號叫索引,索引下標從0開始,以此類推......?

本文著重介紹python的序列及其實際應用,鞏固python語法基礎

?

?

一、序列概念

?

數據結構:以某種方式組合起來的數據元素的集合。

序列:以編號方式組合起來的數據元素的集合。

?

二、序列特點以及通用操作

  1. 索引:通過[n]獲取第n號元素值。n>0索引方向從左向右(0開始),n<0索引方向從右向左(-1開始)。函數調用返回的是序列時,可以直接對其進行索引。

  2. 切片:用[a:b:c]訪問 [a,b) 范圍內的元素。a,b,c均可正可負可空。a:起始位,b:結束位,c:步長。?

  3. 相加:只可拼接同類型的序列。

  4. 相乘:重復序列x次。

  5. 檢查:使用in運算符判斷序列中是否有某成員。返回布爾值(True|False)

  6. 通用內置函數:len返回序列內元素的個數,min和max分別返回序列內元素的最大值和最小值

    ?

?

?

三、python內置序列1——list

列表定義

形如:[a,b,c,d],數據元素可以是另一個序列,元素可修改。

?

列表構建

list()可以將其它序列轉換為列表。

?

列表基本操作

  1. 修改元素:直接選中賦值?ls[1]='e'

  2. 刪除元素:del語句?del ls[1]

  3. 批量修改元素:使用切片賦值增刪改原有數據元素 ls[1:1]='ello'

    ?

列表常用方法

  1. append:列表末尾添加一個對象(可以是一個列表)

  2. clear:只清空,不刪除列表

  3. copy:與ls1=ls2不同,ls2=ls1.copy()后修改ls2不影響ls1

  4. count:計算元素出現次數

  5. extend:列表末尾添加多個值

  6. index:查找某元素在列表中出現第一次的索引值

  7. insert:列表某個位置添加一個對象 ls.insert(2,'a')

  8. pop:刪除一個元素并返回該元素,默認為刪除末尾元素?

    后進先出:ls.append(ls.pop())

    先進先出:ls.append(ls.pop(0)) | ls.insert(0,ls.pop())

  9. remove:刪除列表中第一次出現的指定元素

  10. reverse:相反排序,反轉。

    reversed(ls)函數返回一個迭代器,list(reversed(ls))可以轉換為列表

  11. sort:排序sort(key,reverse) key:用于排序的函數,reverse:True(降序) | False(升序)。sorted(ls,key,reverse),sorted返回列表

    ?

    ?

四、python內置序列2——tuple

元組定義

形如:(a,b,c,d),元素不可修改。

元組構建

單值:1, | (1)

多值:1,2,3 | (1,2,3)

tuple()將其它序列轉換為元組

元組作用

python很多內置函數和方法返回元組,可作為映射中的鍵。

五、python內置序列3——字符串

字符串定義

形如:‘abcd’,元素不可修改。

字符串構建

join()方法可以合并序列為字符串,sep.join(seq):seq各元素間由sep相接,合并為一個字符串

字符串常用方法

  1. count:統計

  2. find:查找某字符串是否存在,不存在返回-1

  3. replace:參數:(替換的字符,替換的內容,替換的次數)

  4. strip:去除左右空格,lstrip/rstrip去左空格/去右空格

  5. 分割:split(字符,次數)返回列表。partition(),只分割第一次出現的位置,分割內容本身也在元組內單獨為一個元素,返回元組

  6. 大小寫:capitalize()第一個字符大寫,title()字符串每個單詞首字母大寫,lower()/upper()全小寫/全大寫

  7. 判斷:startwith/endwith:判斷開頭結尾字符。isalpha/isalnum/isdigit/isspace:判斷字符串全為字母/字母+數字/全為數字/全為空

?

使用序列示例概覽:

 

#定義一個學生序列
>>> stuinfo=['liuwang','xuezhang','zuishuai',18,20]

列表相加:

 

#定義學生姓名和學生年齡,然后再定義一個屬于自己的數據庫將兩個列表加入

>>> stuname=['liuwang','xuezhang','zuishuai']
>>> stuage=[18,20,16]
>>> database=[stuname,stuage]
>>> database
[['liuwang','xuezhang','zuishuai'], [18, 20, 16]]

通用序列操作索引使用:

?

序列中所有元素都有編號,這些編號是從0開始,依次遞增,訪問這些元素通過下標即可訪問,而這個編號就是索引,例如:

>>> database
[['liuwang','xuezhang','zuishuai'], [18, 20, 16]]>>> database[0]
['liuwang', '學長', 'zuishuai']
>>> database[1]
[18, 20, 16]



#字符串序列的索引

>>> str='hello'
>>> str[0]
'h'
>>> str[1]
'e'

?

注意兩種索引方式:剛剛我們使用的是0開始的正向索引,

當使用負數索引時,Python會從右邊到左進行所有,-1是從序列的最后一個元素開始,如下:

?

?
#從最后一個元素開始
>>> str[-1]
'o'
#從倒數第二個元素開始
>>> str[-2]
'l'

?

2.切片

?

同樣的和索引類似,切片是通過冒號操作來訪問一定范圍內的元素,例如:

?


# 構建一個序列tag,里面包含一個元素
>>> tag=['https://www.wakemeupnow.cn']# 拿到這個元素后通過分片取出一個范圍的值(示例域名是我的博客嘿嘿)
>>> tag[0][8:]
'www.wakemeupnow.cn'

由上所知,切片操作的的實現需要提供兩個索引作為邊界,是一個左閉右開的區間。

除了上述方案,也可以通過顯示方式進行操作:

2.1 切片快捷操作


>>> num[0:3]
# 取到前面3個數據
[1, 2, 3]

2.2 分片步長操作

?

分片操作可以給元素設置步長,在開始和結束的時候指定相應步長獲取元素,例如:

?


# 按照步長為2返回第1個和第6個之間的元素
>>> num[0:6:2]
[1, 3, 5]

?

另外需要注意的是負數步長是從元素尾部到前遍歷整個序列,所以負數的分片開始索引一定要大于結束索引

>>> num[7:-1]
[8, 9]

當開始索引和結束索引是負數時開始所以必須小于結束索引:

?


>>> num[-9:-1]
[2, 3, 4, 5, 6, 7, 8, 9]

對于一個正數步長,Python會從序列的頭部開始向右提取元素,直達最后一個元素,而對于負數步長,則是從序列的尾部開始向左提取元素,直達提取到第一個,例如:

# 提取前6個元素,步長為2
>>> num[:6:2]
[1, 3, 5]
# 提取從后往前的8個元素,步長為2
>>> num[:2:-2]
[10, 8, 6, 4]

3.序列相加

?

序列相加通過加號“+”進行序列和序列之間的連接操作:

>>> 'hello'+' 學長!'
'hello 學長!'>>> [1,2,3]+['liuwang','學長']
[1, 2, 3, 'liuwang', '學長']

?

注意:只有相同類型的序列才能進行連接操作。

?

4.序列相乘

?

一個數字x乘以一個序列會產生一個新的序列,原來的序列會被重置成x次

>>> ['hello'+' world !']*3
['hello world !', 'hello world !', 'hello world !']

5.成員資格

?

檢查一個元素是否在一個序列中使用運算符in進行檢查, in運算符返回檢查某個條件的布爾值,若為真返回true,否則返回false,例如:

>>> str='hello'
>>> 'h' in str
True>>> 'x' in str
False

6.序列長度、最大值和最小值

?

序列長度、最大值和最小值使用內建函數len、max、min進行檢測,len返回序列中所包含的元素數量,max和min分別返回序列中最大值和最小值的元素

>>> len([11,34,23])
3
>>> max(11,34,23)
34
>>> min(11,34,23)
11

總結

本節給大家介紹了 Python ?數據結構之序列的使用,對 Python 工程師使用提供了支撐,可以在項目中實際應用中取出相應元素,今天的知識別不是很難,但是需要牢牢地鞏固。

?

?

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

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

相關文章

Css顏色和文本字體

Css顏色,文本字體 css顏色表示法 顏色名表示&#xff0c;比如&#xff1a;red 紅色&#xff0c;gold 金色16進制數值表示&#xff0c;比如&#xff1a;#ff0000 表示紅色&#xff0c;這種可以簡寫成 #f00RGB顏色: 紅(R)、綠(G)、藍(B)三個顏色通道的變化 background-color: r…

springBoot(20):使用Spring Session實現集群-redis

一、session集群的解決方案1.1、擴展指定server利用Servlet容器提供的插件功能&#xff0c;自定義HttpSession的創建和管理策略&#xff0c;并通過配置的方式替換掉默認的策略。缺點&#xff1a;耦合Tomcat/Jetty等Servlet容器&#xff0c;不能隨意更換容器。1.2、利用Filter利…

docker desktop ubuntu鏡像_原創 | Docker入門,看了不理解,假一賠命

寫在前面這篇博客適合誰&#xff1f;對于Docker并不了解&#xff0c;只是有一點模糊的感覺&#xff0c;覺得Docker可以當成虛擬機用之類的只是下載了Docker軟件&#xff0c;對于怎么配置&#xff0c;怎么玩&#xff0c;第一步干什么&#xff0c;完全一無所知其二&#xff0c;我…

Windows - Windows下安裝MSI程序遇到2503和2502錯誤

三個步驟可以解決這個問題&#xff1a; 1&#xff09; 以管理員身份開啟命令行模式并鍵入msiexec /package <msi文件路徑> 2&#xff09; 修改組策略 計算機配置 ->> 管理模板 ->> Windows組件 ->> Windows Installer ->> 始終以提升的權限進行安…

如何確定h.264的碼率

A:如何確定h.264的碼率&#xff1f; 碼率 編碼產生的總比特數 * 幀頻 / 編碼總幀數碼率控制機制就是使編碼器編碼產生的碼流盡量符合你設定的碼率。從上面的公式可以看出&#xff0c;當編碼幀數和幀頻確定后&#xff0c;碼率控制要做的就是控制編碼產生的比特數。 A:我現在想…

【Python基礎入門系列】第08天:Python List

Python內置的一種數據類型是列表&#xff1a;list。list是一種有序的集合&#xff0c;可以隨時添加和刪除其中的元素。 LIST 列表 比如&#xff0c;列出班里所有同學的名字&#xff0c;就可以用一個list表示&#xff1a; >>> classmates [liuwang, xuezhang, al…

金屬磁記憶傳感器封裝

金屬磁記憶傳感器封裝 摘 要 通過分析壓力傳感器和FBG傳感器的結構,針對金屬磁記憶傳感器自身特點,結合井下作業要求,提出了金屬磁記憶傳感器的封裝設計原則;根據該原則,設計出了一種金屬磁記憶傳感器的封裝結構,并對其進行了有限元模擬分析;對封裝后的金屬磁記憶傳感器實物進…

【Python基礎入門系列】第09天:Python tuple

Python 中的數據結構是通過某種方式組織在一起的數據元素的集合&#xff0c;這些數據元素可以是數字、字符、甚至可以是其他數據結構 在 Python 中&#xff0c;最基本的數據結構是序列&#xff08;在前面文章我們也說過序列&#xff09;&#xff0c;序列中的每個元素都有一個序…

黑客攻防:關于工業網絡安全的那些事

1、概述 隨著工業信息化的快速發展以及工業4.0時代的到來&#xff0c;工業化與信息化的融合趨勢越來越明顯&#xff0c;工業控制系統也在利用最新的計算機網絡技術來提高系統間的集成、互聯以及信息化管理水平。未來為了提高生產效率和效益&#xff0c;工控網絡會越來越開放&am…

elementui table某一列是否顯示_Vue項目引進ElementUI組件的方法

環境要求NodejsNodejs官網下載地址&#xff1a;http://nodejs.cn/download/具體安裝參考其他資料打開cmd命令行&#xff0c;輸入npm -v&#xff0c;如果出現如下圖的顯示&#xff0c;說明已經安裝正確。如果安裝版本比較老&#xff0c;想升級新版本npm install npm -g安裝 webp…

Entry

Entry&#xff08;單行輸入框&#xff09;用于獲取用戶輸入的文本。 Entry組件僅允許輸入一行文本&#xff0c;如果輸入過長&#xff0c;那么內容將被滾動&#xff0c;意味著字符串不能被全部看到。 1 from tkinter import *2 3 master Tk()4 5 e Entry(master)6 e.pack(padx…

集成電路版圖與工藝課程設計之用CMOS實現Y=AB+C電路與版圖

1 緒論 1.1 設計背景 集成電路設計&#xff08;Integrated circuit design, IC design&#xff09;&#xff0c;亦可稱之為超大規模集成電路設計&#xff08;VLSI design&#xff09;&#xff0c;是指以集成電路、超大規模集成電路為目標的設計流程。集成電路設計涉及對電子器…

關于H264通過RTP傳輸的打包方式

Q:現在小弟初次嘗試H264的編碼通過RTP方式傳輸&#xff0c;具體實驗環境的問題如下&#xff1a;環境&#xff1a;服務器端&#xff0c;H264的幀數據&#xff08;可能超過64k&#xff09;&#xff0c;分成N個1460字節的包&#xff0c;然后加上RTP頭發送。客戶端&#xff0c;VLC播…

AngualrJS之服務器端通信

譯自《AngularJS》 與服務器通信 目前&#xff0c;我們已經接觸過下面要談的主題的主要內容&#xff0c;這些內容包括你的Angular應用如何規劃設計、不同的angularjs部件如何裝配在一起并正常工作以及AngularJS中的模板代碼運行機制的一小部分內容。把它們結合在一起&#xff0…

硬盤顯示容量和實際容量不符合_買移動固態硬盤糾結大半天?花2分鐘看完這篇,購買時不再被坑...

如今移動硬盤已成為很多辦公用戶標配的物品&#xff0c;縱觀整個移動硬盤市場&#xff0c;主要有移動機械硬盤和移動固態硬盤兩種類型&#xff0c;前者容量大&#xff0c;價格較親民&#xff1b;而后者具備了輕薄、讀寫速度快、耐振動不怕摔等優點。不少追求高效率的用戶&#…

【Python基礎入門系列】第10天:Python 類與對象

首先&#xff0c;我已經假定你是個萌新或已經看了無數遍的垃圾文章&#xff0c;然后依然搞不懂類和對象&#xff0c;但是呢起碼知道有類和對象這么兩個玩意兒&#xff0c;我覺得有必要找一篇生動形象的示例來講解。 由于你可能沒有編程經驗&#xff0c; 所以無法從學過的編程…

數字電子技術課程設計之基于觸發器的三位二進制同步減法計數器無效態000/110

基于觸發器的三位二進制同步減法計數器無效態000/110 1 課程設計的目的與作用 掌握用multisim 的電路仿真程序 熟悉同步計數器工作原理和邏輯功能 熟悉計數器電路的分析和設計方法 掌握161 芯片集聯成任意進制同步加法計數器 2 設計任務 三位二進制減法計數器&#xff08;無…

SUSE11 搭建iscsi target 配置

https://www.suse.com/documentation/sles11/stor_admin/data/sec_inst_system_iscsi_target.html#sec_inst_system_iscsi_target_manual https://www.novell.com/support/kb/doc.php?id7001308 http://scst.sourceforge.net/comparison.html轉載于:https://www.cnblogs.com/b…

圖像、幀、片、NALU(firstime)

圖像、幀、片、NALU 是學習 H.264 的人常常感到困惑的一些概念&#xff0c;我在這里對自己的理解做一些闡述&#xff0c;歡迎大家討論&#xff1a;H.264 是一次概念的革新&#xff0c;它打破常規&#xff0c;完全沒有 I 幀、P幀、B 幀的概念&#xff0c;也沒有 IDR 幀的概念。對…

【Python的黑魔法】實例方法、靜態方法和類方法

class Bird:# classmethod修飾的方法是類方法classmethoddef fly (cls):print(類方法fly: ,cls)# staticmethod修飾的方法是靜態方法# staticmethoddef info (p):print(靜態方法info: , p)if __name__ __main__:# 調用類方法&#xff0c;Bird類會自動綁定到第一個參數Bird.fl…