17. 字串詳解及序列型別

大牧莫邪發表於2017-05-17

字串是我們在程式中使用非常多的一個物件,對於字串的處理在各種程式語言中也是非常重要的一部分。

1. python中的字串定義

python中的字串,可以使用單引號、雙引號或者三個單引號包含的字元,都是字串。

s1 = '我是一個字串'
s2 = "我也是一個字串"
s3 = ''' 我還是一個字串
我是能換行寫內容的字串
'''

注意:python2中字串字面量對應8位字元或者面向位元組的資料,不能完全支援unicode字串。這樣的情況,如果要使用漢字,可以通過如下方式解決 * 在py檔案的首行,新增 # -*- coding:utf-8 -*-的註釋,來標識當前檔案是使用utf-8編碼 * 在py中,定義的字串,可以在前面新增一個字元u來標識該字串是使用unicde進行編碼的,如str = u"我是字串"

2. 字串作為模組、類、函式的文件註釋

字串你可以放在模板,類或者函式的第一行,作為對函式的描述作用出現,可以通過木塊、類、函式的doc屬性進行呼叫檢視。

def printName(msg):
    "這是一個用來列印給定資訊的函式"
    print("您要列印的資訊:" + msg)

printName.__doc__
------------------------------
執行結果:
"這是一個用來列印給定資訊的函式"

模組、類或者函式的文件註釋非常重要,一般情況下是對於當前要使用的模組、類或者函式使用方式的最直接的描述,開發人員在使用的時候可以通過木塊、類或者函式的doc屬性來檢視使用方式。

2. 字串作為序列支援的操作方法

  • s[i] : 返回序列中下標為i的元素
  • s[i:j]:返回序列中下標從i到j之間的資料,這樣擷取資料也成為切片
  • s[i:j:stride]:返回一個擴充套件的切片
  • len(s):返回序列中元素資料的數量
  • min(s):返回序列中的最小值
  • max(s):返回序列中的最大值
  • sum(s [, initial]):返回序列中所有資料的和
  • all(s):檢查序列中所有的資料是否為True
  • any(s):檢查序列中任意項是否為True

  • capitalize() 字串首字元大寫

  • isupper() 字串是否全部大寫
  • upper() 字串所有字元大寫
  • islower() 字串是否所有字元小寫
  • lower() 字串中所有字元小寫
  • index(str [,start, end]) 獲取指定字元在字串中出現的位置
  • t.join(s):使用字串t來拆分字串s,或者將一個列表s中的字串元素按照使用t連線
  • replace(old, new):將指定字串中的old字元,使用新字元new進行替換
  • split(sep, max):將字串使用指定的字元sep進行拆分,max是拆分次數,返回一個列表

    字串也是一種序列物件

    # 定義一個字串
    strx = "hello python!"
    # 獲取下標為7的資料
    strx[7]
    # 執行結果:y
    
    
    # 獲取下標從2到7的切片
    strx[2:5]
    # 執行結果:"llo p"
    
    
    # 獲取下標從2到9的切面,步長為2
    strx[2:9:2]
    # 執行結果: "lopt"
    
    
    # 反向切片
    strx[9:2:-2]
    # 執行結果:"hy l"
    
    
    # 獲取字串中最小的資料
    strx(str)
    # 執行結果:" "
    
    
    # 獲取字串中最大的資料
    strx(str)
    # 執行結果:w
    
    
    # 按照首字母大寫的方式輸出資料
    strx.capitalize()
    # 執行結果:Hello python!
    
    
    # 判斷字串是否全部大寫和轉換成大寫
    strx.isupper()
    strx.upper()
    # 執行結果:False, HELLO PYTHONE!
    
    
    # 判斷字串是否全部小寫和轉換成小寫
    strx.islower()
    strx.lower()
    # 執行結果:True, hello python!
    
    
    # 獲取字元o的位置
    strx.index("o")
    strx.index("o", 5)
    # 執行結果:4, 10
    
    
    # 替換字串中的所有的l為x
    strx.replace("o", "x")
    # 執行結果:hexxo python!
    
    
    # 拆分字串為列表進行使用
    strx.split("o")
    # 執行結果:["hell", "pyth", "n!"]
    strx.split("o", 1)
    # 執行結果:["hell", "python!"]
    
    
    # 建立一個列表
    lix = ["h", "e", "l", "l", "o"]
    # 執行join()方法,將列表資料拼接字串
    "".join(lix)
    # 執行結果:hello
    
    
    # 建立一個列表
    lix = [1,2,3,4,5]
    # 計算序列列表中所有元素的和
    

3. 其他序列物件中常見的函式操作

python中除了字串,其他的常見序列物件就是列表、元組、集合、字典 列表的操作 * 列表的操作

* append(x):用於在列表的末尾追加元素x
* clear():用於清空列表中的所有資料
* copy():用於複製一份列表中的資料
* count(x):用於查詢統計在列表中指定的元素x出現了多少次
* extend():用於將一個列表中的資料從另一個指定的列表中繼承過來
* index(x):用於查詢指定的元素x在列表中出現的位置索引
* insert(index, ele):用於在指定的位置index增加一個元素ele
* pop():用於刪除最後一個元素
* remove(x):用於在列表中刪除指定的元素x
* reverse():用於反轉列表中的所有資料
* sort():用於列表中的資料進行自然排序


# 建立一個列表
lix = ["hello", "python"];
# 執行列表的方法
lix.append("大牧")   # 執行結果:lix = ["hello", "python", "大牧"]
liy = lix.copy()      # 執行結果: liy = ["hello", "python", "大牧"]
liy.clear()    # 執行結果: liy = []
lix.count("hello")        # 執行結果: 1
liy.extend(lix)       # 執行結果: liy = ["hello", "python", "大牧"]
lix.index("python")     # 執行結果:1
lix.insert(1, "莫邪")     # 執行結果: lix = ["hello", "莫邪",  "python", "大牧"]
lix.pop()            # 執行結果:lix = ["hello", "莫邪",  "python"]
lix.remove("莫邪")  # 執行結果:lix = ["hello", "python"]
lix.sort()      # 執行結果:lix = ["hello", "python"]
  • 元組的操作

元組一旦宣告常見,不允許進行修改

* count(x) 統計元組中指定的元素x出現的次數
* index(x) 統計元素中指定的元素x出現的位置

程式碼案例:

t = ("張小凡", "碧瑤", "陸雪琪")
t.count("張小凡")    # 執行結果:1
t.index("陸雪琪")    # 執行結果:2
  • 集合的操作

集合中不會儲存重複資料,同時集合中儲存的資料是無序的

* add()
* clear()
* copy()
* difference()
* difference_update()
* discard()
* intersection()
* intersection_update()
* isdisjoint()
* issubset()
* issuperset()
* pop()
* remove()
* symmetric_difference()
* symmetric_difference_update()
* union()
* update()
  • 字典的操作

    字典中的資料是以key:value的形式進行資料儲存的

    • clear()
    • copy()
    • fromkeys()
    • get()
    • items()
    • keys()
    • pop()
    • popitem()
    • setdefault()
    • update()
    • values()

相關文章