目錄
- 前言
- 序列
- 序列是什麼?
- 有哪些序列類型呢?
- 1. 按照能存儲的元素劃分
- 2. 按照是否可變劃分
- 序列都有哪些方法以及特性呢?
- 序列的索引
- 序列切片
- 序列相加
- 序列相乘
- 檢查元素是否包含在序列中
- 序列相關的內置函數
- 字符串
- 字符串的定義
- 原始字符串的處理
- 字符串的分割方法
- 字符串拼接的方法
- 總結
- 牛刀小試一下吧
- 參考答案
本文主要介紹Python數據類型中序列和字符串,文末有彩蛋哦
幹貨滿滿,建議收藏,用到時常看常新。 小夥伴們如有問題及需要,請留言告訴我哦~ ~ ~。
前言
上一篇文章我們介紹瞭Python內置數據類型。這篇文章就開始介紹序列類型。本文首先會介紹序列的基本概念和通用的方法,接著會介紹Python中的字符串的概念和基本用法。
序列
序列是什麼?
序列(sequence)指的是一塊可存放多個元素的內存空間,這些元素按照一定的順序排列。每個元素都有自己的位置(索引),可以通過這些位置(索引)來找到指定的元素。如果將序列想象成一個酒店,那麼酒店裡的每個房間就相當於序列中的每個元素,房間的編號就相當於元素的索引,可以通過編號(索引)找到指定的房間(元素)。
有哪些序列類型呢?
瞭解完瞭序列的基本概念,那麼在Python中一共有哪些序列類型呢?如下圖所示:
從圖中可以看出在Python中共有7種序列類型,分別是文本序列類型(str);二進制序列類型 bytes和bytearray;列表(list);元組(tuple);集合類型(set和frozenset);范圍類型(range)以及字典類型(dict)。
1. 按照能存儲的元素劃分
按照能存儲的元素可以將序列類型劃分為兩大類:分別是:容器序列和扁平序列
容器序列:即可容納不同數據類型的元素的序列;有 list;tuple;set;dict
舉個栗子:
list=['runoob',786,2.23,'john',70.2]
這裡的list保存的元素有多種數據類型,既有字符串,也有小數和整數。
扁平序列:即隻能容納相同數據類型的元素的序列;有bytes;str;bytearray,以str為例,同一個str隻能都存儲字符。
2. 按照是否可變劃分
按照序列是否可變,又可分為可變序列和不可變序列。
這裡的可變的意思是:序列創建成功之後,還能不能進行修改操作,比如插入,修改等等,如果可以的話則是可變的序列,如果不可以的話則是不可變序列。
可變序列有列表( list);字典(dict)等,
不可變的序列有元祖(tuple),後面的文章會詳細的對這些數據類型做詳細介紹。
序列都有哪些方法以及特性呢?
序列的索引
在介紹序列概念的時候,說到瞭序列中元素的索引,那麼什麼是序列的索引呢?其實就是位置的下標。 如果對C語言中的數組有所瞭解的話,我們知道數組的索引下標都是從0開始依次遞增的正數,即第一個元素的索引下標是0,第n個元素的索引下標是n-1。序列的索引也是同理,默認情況下都是從左向右記錄索引,索引值從0開始遞增,即第一個元素的元素的索引值是0,第n個元素的索引值是n-1。如下圖所示:
當然與C語言中數組不同的是,Python還支援索引值是負數,該類的索引是從右向左計數。換句話說,就是從最後一個元素開始計數,從索引值-1開始遞減,即第n個元素的索引值是-1,第1個元素的索引值是-n,如下圖所示:
序列切片
切片操作是訪問序列元素的另一種方式,它可以訪問一定范圍內的元素,通過切片操作,可以生成一個新的序列。切片操作的語法格式是:
sname[start : end : step]
各個參數的含義分別是:
- sname: 表示序列的名稱
- start:表示切片的開始索引位置(包括該位置),此參數也可以不指定,不指定的情況下會默認為0,也就是從序列的開頭開始切片。
- end:表示切片的結束索引位置(不包括該位置),如果不指定,則默認為序列的長度。
- step: 表示步長,即在切片過程中,隔幾個存儲位置(包括當前位置)取一次元素,也就是說,如果step的值大於1,比如step為3時,則在切片取元素時,會隔2個位置去取下一個元素。
還是舉個栗子說明下吧:
str1='好好學習,天天向上' # 取出索引下標為7的值 print(str1[7]) # 從下標0開始取值,一直取到下標為7(不包括)的索引值 print(str1[0:7]) # 從下標1開始取值,一直取到下標為4(不包括)的索引值,因為step等於2,所以會隔1個元素取值 print(str1[1:4:2]) # 取出最後一個元素 print(str1[-1]) # 從下標-9開始取值,一直取到下標為-2(不包括)的索引值 print(str1[-9:-2])
運行的結果是:
向 好好學習,天天 好習 上 好好學習,天天
序列相加
Python支援類型相同的兩個序列使用"+"
運算符做想加操作,它會將兩個序列進行連接,但是不會去除重復的元素,即隻做一個簡單的拼接。
str='他叫小明' str1='他很聰明' print(str+str1)
運行結果是:他叫小明他很聰明
序列相乘
Python支援使用數字n乘以一個序列,其會生成一個新的序列,新序列的內容是原序列被重復瞭n次的結果。
str2='你好呀' print(str2*3)
運行結果是:你好呀你好呀你好呀
,原序列的內容重復瞭3次。
檢查元素是否包含在序列中
Python中可以使用in
關鍵字檢查某個元素是否為序列中的成員,其語法格式為:
value in sequence
其中,value表示要檢查的元素,sequence表示指定的序列。
舉個栗子:查找天
字是否在字符串str1中。
str1='好好學習,天天向上' print('天' in str1)
運行結果是:True
序列相關的內置函數
函數 | 功能 | 適用場景 |
---|---|---|
len() | 計算序列的長度,即返回序列中包含瞭多少個元素 | 適用於列表,元組、字典、集合、字符串等 |
max() | 找出序列中的最大元素,針對序列中元素是數字的情況 。 | 適用於列表,元組、字典、集合、range等 |
min() | 找出序列中的最小元素,針對序列中元素是數字的情況 | 適用於列表,元組、字典、集合、range等 |
list() | 將序列轉換為列表 | 適用於字符串 |
str() | 將序列轉換為字符串 | 適用於列表,元組,數字 |
sum() | 對序列中的元素求和,註意,對序列使用sum()函數時,做加和操作的必須全部是數字,不能是字符或者字符串,因為解釋器無法判定事要做連接操作,還是做加和操作 | 適用於列表,元組、集合、range等 |
sorted() | 對元素進行排序 | 適用於列表,元組、字典、集合、range,字符串等 |
reversed() | 反向序列中的元素 | 適用於列表,元組、字典、集合、range,字符串等 |
enumerate() | 枚舉列表元素,返回枚舉對象,其中每個元素包含下標和值的元組。該函數對元組/字符串同樣有效。 | 適用於列表,元組、字典、集合、range,字符串等 |
依然是舉例說明:
str3='碼農飛哥' print('字符串的長度=',len(str3)) print('轉成列表=',list(str3)) print('調用enumerate函數',enumerate(str3)) print('遍歷enumerate函數的結果:') for item in enumerate(str3): print(item) print('遍歷reversed函數的結果:') for item in reversed(str3): print(item) list2=['碼農','飛哥'] print('列表轉字符串=',str(list2)) list1=[12,20,5,8,1] print('最大值=',max(list1)) print('最小值=',min(list1)) print('求和結果=',sum(list1)) print('排序結果=',sorted(list1))
運行結果是:
字符串的長度= 4 轉成列表= ['碼', '農', '飛', '哥'] 調用enumerate函數 <enumerate object at 0x7f90818cd540> 遍歷enumerate函數的結果: (0, '碼') (1, '農') (2, '飛') (3, '哥') 遍歷reversed函數的結果: 哥 飛 農 碼 列表轉字符串= ['碼農', '飛哥'] 最大值= 20 最小值= 1 求和結果= 46 排序結果= [1, 5, 8, 12, 20]
字符串
前面介紹序列時,大部分例子都是用字符串來表示的,那麼就來認識一下字符串吧!
字符串的定義
由若幹個字符組成的集合就是一個字符串(str),Python中的字符串必須由雙引號””或者單引號”包圍。其語法格式是:
"字符串內容" '字符串內容'
如果字符串中包含瞭單引號需要做特殊處理。比如現在有這樣一個字符串
str4='I'm a greate coder'
直接這樣寫有問題的。
處理的方式有兩種:
對引號進行轉義,通過轉義符號\
進行轉義即可:
str4='I\'m a greate coder'
使用不同的引號包圍字符串
str4="I'm a greate coder"
這裡外層用雙引號,包裹字符串裡的單引號。
原始字符串的處理
有時候我們並不想字符串被轉義,這種情況下可以使用在字符串的開頭加上r前綴,就變成瞭原始字符串,具體格式是:
str1 = r'原始字符串內容' str2 = r"原始字符串內容"
舉個例子吧:
str4=r'碼農\'飛哥真棒' str5=r"碼農\'飛哥真棒" print(str4) print(str5)
運行結果是:
碼農\'飛哥真棒 碼農\'飛哥真棒
字符串的分割方法
在實際開發中,我們經常要根據档案名獲取档案的後綴名,這該如何處理呢?
path = "test_user_info.py"
現在要提取後綴名py
,其實可以通過split方法,將字符串分割成列表(list),然後從列表中取值,就像下面這樣:
suffix = path.split(".")[1] print("suffix: {}".format(suffix))
字符串拼接的方法
字符串拼接的方法有三種,分別是:
- 通過join方法
通過join方法的語法格式是str.join(iterable)
,其中join的條件是 iterable可迭代的,並且列表元素是字符串(str)。就是對iterable中的每個元素進行遍歷,然後拼接到str上,這裡的str是用於指定合並時的分隔符,如果想拼接之後的字符串是逗號分割,那麼寫法是通過format方法
- 通過format方法
format 方法是通過占位符占據要拼接的字符串的位置。
- 通過
+
運算符
現有字符串碼農飛哥好,
,要求將字符串碼農飛哥牛逼
拼接到其後面,生成新的字符串碼農飛哥好,碼農飛哥牛逼
str6 = '碼農飛哥好,' # 使用+ 運算符號 print('+運算符拼接的結果=',(str6 + '碼農飛哥牛逼')) #使用join拼接字符串 list2 = ['碼', '農', '飛', '哥', '牛', '逼'] print('無符號分割join的拼接結果=', ''.join(list2)) print('逗號分割join的拼接結果=', ','.join(list2)) # 使用format拼接 str7 = str6 + '{0}' print('format拼接的結果=',str7.format('碼農飛哥牛逼')) str8=str6+'{0}{1}' print('format拼接的結果=',str8.format('碼農飛哥','牛逼'))
運行結果是;
+運算符拼接的結果= 碼農飛哥好,碼農飛哥牛逼 無符號分割join的拼接結果= 碼農飛哥牛逼 逗號分割join的拼接結果= 碼,農,飛,哥,牛,逼 format拼接的結果= 碼農飛哥好,碼農飛哥牛逼 format拼接的結果= 碼農飛哥好,碼農飛哥牛逼
大傢想想如果還直接使用str6.join('碼農飛哥牛逼')
最後的輸出結果是啥呢?
str6 = '碼農飛哥好,' print(str6.join('碼農飛哥牛逼')) print(str6)
運行結果是
碼碼農飛哥好,農碼農飛哥好,飛碼農飛哥好,哥碼農飛哥好,牛碼農飛哥好,逼 碼農飛哥好,
就是將碼農飛哥牛逼
遍歷,然後每個字符拼接到str6前面,所以前面的 str6是作為一個拼接的分隔符號的。
需要特別註意的是拼接後的字符串是新的字符串,而不是在原有的字符串上修改。所以我們看到原字符串str6在拼接後並沒有改變。這個特新跟Java中的String是一樣,那麼有小夥伴知道str不可變的原因的?歡迎留言哦。
所以在遍歷拼接字符串的時候要特別註意賦值,就像這樣:
list = ['碼', '農', '飛', '哥', '牛', '逼'] str_list = str("") for str1 in list: str_list = str_list + "file {0}\n".format(str1) print(str_list)
總結
本文詳細介紹瞭Python內置數據類型中的序列類型,介紹瞭序列的基本概念,序列就是一塊存儲多個元素的內存空間,這些元素按照一定的順序排列,介紹瞭序列的通性,可以把序列當成其他語言中的數組,可以把序列想象成一個酒店。序列通過索引來查找裡面的值。最後介紹瞭字符串,希望對讀者朋友們有所幫助。
牛刀小試一下吧
現有如下的字符串
str6='程式猿正在創造世界'
如何根據str6輸出結果為正創
的字符串?
如何根據str6輸出結果為界世造創的默默猿序程
的字符串呢?
小夥伴積極思考。參考答案詳見文尾:
參考答案
現有如下的字符串
str6='程式猿正在創造世界'
如何根據str6輸出結果為正創
的字符串?如何根據str6輸出結果為界世造創的默默猿序程
的字符串呢?
這裡主要考察的是字符串的切片以及字符串的拼接等知識點。這裡還用到瞭反轉函數。
答案一:
str6 = '程式猿正在創造世界' # 索引的坐標是從0開始的,3表示取第4個字符串,6表示到第七個字符串(不包括),步長是2 print(str6[3:6:2]) # 首先獲取反轉之後的字符串 str2 = ''.join(reversed(str6)) #將字符串拼接成我們想要的字符 print(str2[0:4] + '默默的' +str2[6:9])
答案二:
str6 = '程式猿正在創造世界' # 第一題 print(str6[3]+str6[5]) # 第二題 str6=str6[0:3]+str6[5:] list2 = list(reversed(str6)) list2.insert(4, '的默默') print(''.join(list2))
到此這篇關於python入門課程第五講之序列和字符串的文章就介紹到這瞭,更多相關python序列字符串內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支援!
You may also like
相关贴文:
近期文章
- 訂單狀態控制插件用於WooCommerce
- 客戶無法停止狂歡的WooCommerce插件! | ⭐5.0評級WooCommerce
- Curcy – WooCommerce多貨幣 – 貨幣切換器安裝和使用
- 如何將WooCommerce產品發佈到eBay和Etsy |教程2025
- 最好的WooCommerce產品搜索插件,以改善用戶體驗
- Shopify vs WooCommerce(WordPress) – 哪個更好?
- 免費在WordPress中添加產品品牌|在品牌下出售產品
- WooCommerce還是Shopify?初學者的全面比較|| 2025年最佳電子商務平台
- 2024年的12個最佳打印件WooCommerce插件