本節考慮的python的乙個中要的內建物件序列, 所謂的序列即乙個有序物件的集合。這裡的物件可以是數字、字串等。根據功能的不同將序列分為字串、列表、元組,本文將以下這幾種物件做一些介紹。
一. 字串
字串是乙個非常常見的物件,我們平時在文字中編輯的物件都是字串,例如『你的名字,『i love python!』等都是字串,字串的重要性不言而喻。
1.字串的定義
通常我們將需要編輯的字串的字串放在乙個英文的單引號/英文雙引號中,例如當我們在編輯器輸入'i love python ! '的時候我們就建立了乙個字串物件,此時的字串還沒有變數來接受,所以我們需要用乙個變數名來接受該字串。例如 s1 = 'i love python ! ', 這就是建立乙個字串的完整格式,即 變數名 = 『』字串物件』,這裡需要注意的是英文單引號。
2.字串的相關運算
>>>s1 = 'i love python ! '
>>>s1 = 'hello 2018 ! '
合併:+ , 字串的加法表示字串的合併
>>> s1+s2
'i love python !hello 2018 !'
重複: *, 乘法表示字串的重複
>>> s1*3
'i love python !i love python !i love python !'
索引:s1[index] 正數表示從第乙個位置0開始索引,負數表示從倒數第乙個開始 。注意空格也是乙個字串
>>> s1[0]
'i'>>> s1[-1]
>>> s1[1]
s.find(object):查詢元素位置,預設返回元素第一次出現的位置,可新增查詢範圍,若沒有返回-1
s.index(value, [start, [stop]])預設返回元素第一次出現的位置,可新增查詢範圍,如不存在則會報錯。
s[i:j] : 切片,擷取字串的某一部分,i為擷取開始段,j為擷取結束段。注意包含開始不包含結束( 左閉右開)
>>> s1[2:7]
'love '
len(s): 判斷長度, 返回字串的長度
s.count('a'): 返回s中a的個數,若沒有返回0
s.endswith('hk'): 是否以...結尾,返回true /false
s.startswith('a'):是否以...開始,返回true /false
s.replace('old','new'): 替換,需要特別注意的是替換並沒有改變字串的值,而是開闢了新的乙個字串物件,若需要用新的字串物件字需要為它賦乙個新的變數名
>>> s1.replace('love','hate')
'i hate python !'
>>> s1
'i love python !'
s.isalpha(): 判斷是否全是字母/漢字
s.isdigit():判斷是否全是數字,只能判斷正整數
s.islower():判斷是否全是小寫
s.isupper():判斷是否全是大寫
s.lower(): 轉換為小寫
s.upper(): 轉換為大寫 #另外開闢乙個位址需要乙個新的位址接受,s本身沒有變
>>> s1.upper()
'i love python !'
>>> s1
'i love python !'
s.split(): 分割,預設以空格分割,也可以自定義分割位置,分割之後轉化為列表。字串自身沒有不改變。
>>> s1.split()
['i', 'love', 'python', '!']
>>> s1.split('love')
['i ', ' python !']
>>> s1
'i love python !'
只對經常用到的操作做以介紹,在介紹中特別強調了,字串自身沒有發生改變,這一點是非常重要的字串一旦定義就不會發生改變,若要利用操作之後新的字串一定一定要將其賦給乙個新的變數名。
二. 列表
列表python中比較靈活的是有序物件的集合,以字串不同的是,列表可以包含任何物件:數字,字串,甚至其他列表。同樣,與字串不同的是列表都是可變物件,他們支援在原處修改。下面對列表進行描述:
列表是:
任意物件的有序集合
通過偏序讀取
可改變長度、異構以及任意巢狀
可改變序列分類
1.定義
l = ['hello','world','!'] 列表的定義是放在英文中括號內的,可巢狀如 l = ['hello','world','!',['i','love','python','!']]
2. 列表的運算
l = ['hello','world','!']
l1 = ['hello','world','!',['i','love','python','!']]
l[i],l[i][j]: 索引
>>> l1[2]
>>> l1[3]
['i', 'love', 'python', '!']
>>> l1[3][1]
'love'
l[i:j]: 切片,左閉右開
len(l):
+:合併
*: 重複
新增:l.insert(index,object):在固定的位置新增物件,index表示新增物件的位置,一次只能新增乙個物件。注意新增物件後面的
物件的索引都發生了變化。
刪除:l.pop() 預設刪除最後乙個元素
l.remove(value) -> none 指定刪除
l.clear() -> none -- remove all items from l:將列表清空
l.copy() -> list -- a shallow copy of l: 複製,注意複製後不是同乙個物件,記憶體位址改變。copy()是複製函式,複製之後變為兩個相同的物件,他們相同但不是同乙個 物件
>>> l2 = l.copy()
>>> l2
['hello', 'world', '!']
>>> l2 == l
true
>>> l2 is l
false
>>> id(l)
>>> id(l2)
l.reverse(): 將列表反轉
l.sort(): 排序,排序是乙個語言中非常重要的一部分,以後會對sort()函式做乙個深入的介紹,這裡簡單介紹一些用法。
>>> l
['hello', 'world', '!']
>>> l.sort()
>>> l
['!', 'hello', 'world']
>>> l.sort(key = len, reverse = true)
>>> l
['hello', 'world', '!']
字串轉化為列表:s.split(), list(s)
>>> s1 = 'china is a great country'
>>> l = s1.split()
>>> l
['china', 'is', 'a', 'great', 'country']
>>> l1 = list(s1)
>>> l1
['c', 'h', 'i', 'n', 'a', ' ', 'i', 's', ' ', 'a', ' ', 'g', 'r', 'e', 'a', 't', ' ', 'c', 'o', 'u', 'n', 't', 'r', 'y']
列表的基本操作目前就介紹這些,進一步的操作將在以後的學習中介紹。 ***注意列表是可變的***
三. 元組
元組有簡單物件構成,元組與列表非常相似,只不過元組不能在遠處修改(它們是不可變的),構成使用圓括號,元組具有列表的大多數屬性。
元組是:
任意物件的有序集合
通過偏序讀取
屬於不可變序列型別
固定長度、異構任意巢狀
1. 元組的定義
元組的定義方式有兩種如下
>>> t =1,2,3
>>> t
(1, 2, 3)
>>> t=(1,2,3)
>>> t
(1, 2, 3)
2. 元組的操縱
元組的基本操作與列表一樣,這裡不多做介紹
問題: 為什麼有了列表還要元組?
元組的不可變性提供了某種完整性,可以確保在程式中不會被修改,而列表沒有這樣的性質。元組的角色類似於『常量宣告』, 一旦定義無法改變,而列表不具備這樣的性質。實際中應該按需應用。
sprintf舉例說明
最近需要把圖形的座標轉換為字元來檢驗圖形座標的正確與否,所以較多的用到了sprintf 函式。例如 int sign 100 char s1 10 sprintf s1,d sign pdc textout 0,0,s1 這裡就把sprintf 函式的用法總結一下。int sprintf char ...
python argparse舉例說明
目的 想從命令列通過命令來指定是否執行程式中的某個函式 模組 更新關於另乙個例子 這裡只舉例說明 原因是看了很多博文之後,還是沒有解決筆者上面說的那個問題,即如何從命令列決定是否執行某段函式問題 設定乙個引數,名為foreground,簡寫f 即在終端可以輸入 foreground也可以輸入 f。跟...
內聚型別 與 耦合型別(舉例說明)
一 理解內聚與耦合 二 內聚型別 低 高 1 偶然內聚 模組的各成分之間沒有關聯,只是把分散的功能合併在一起。例 a模組中有三條語句 一條賦值,一條求和,一條傳參 表面上看不出任何聯絡,但是b c模組中都用到了這三條語句,於是將這三條語句合併成了模組a。模組a中就是偶然內聚。2 邏輯內聚 邏輯上相關...