1. 程式人生 > 其它 >字串補充,列表內建方法

字串補充,列表內建方法

今日內容

  • 字串的其他內建方法
  • 列表內建方法

字串的其他內建方法

  1. 移除字串首尾的指定字元,可以指定方向

    # strip()    去除兩邊
    # lstrip()   去除左邊
    # rstrip()   去除右邊
    # 括號內不寫東西,預設是空格
    s = '$$$hello$$$'
    print(s.strip('$'))
    # 結果:hello
    print(s.lstrip(''))
    # 結果:hello$$$
    print(s.rstrip(''))
    # 結果:$$$hello
    
  2. 字串大小寫相關操作

    # lower 將字串所有的英文字母全轉為小寫
    # upper 見字串所有的英文字母全轉為大寫
    s = 'tuzi12312'
    print(s.upper())
    # TUZI12312
    print(s.lower())
    # tuzi12312
    print(s.islower())  # 判斷字串內的英文字母是否全部是小寫
    # True
    print(s.isupper())  # 判斷字串內的英文字母是否全部是大寫
    # False
    
    # 這個內建方法的應用領域最經典的就是驗證碼
    code = 'TuZi'  # 定義一個驗證碼
    print('返回給使用者的圖片驗證碼%s:'%code)  # 提示給使用者驗證碼資訊
    user_code = input('請輸入圖片裡的字母>>>:').strip()  # 獲取使用者輸入的驗證碼,並遮蔽使用者輸入的空格
    if user_code.lower()== code.lower():  # 判斷使用者輸入的驗證碼是否正確,並全轉換為小寫來進行比對
        print('驗證成功')
    else:  # 輸入錯誤則執行子程式碼
        print('驗證失敗')
    
  3. 判斷字串開頭是否是指定的字元

    '''
    startswith:判斷開始的字元是否為指定的字元
    endswith:判斷末尾的字元是否為指定的字元
    '''
    s = 'tuzi abaaba tom jerry'
    print(s.startswith('t'))  # True
    print(s.startswith('tuzi'))  # True
    print(s.endswith('s'))  # flase
    
  4. 格式化輸入(python 中推薦使用format)

    #方式1:佔位符%s %d
    #方式2:format方法:一共有四種
    # 1.跟佔位符一樣,使用{}佔位
    print('tuzi {} age {} psw {}'.format('meitoufa', 18, 123))  # 這種方式有幾個大括號,就得填入幾個元素
    # 結果:tuzi meitoufa age 18 psw 123
    
    # 2.根據索引佔位
    print('username {0} age {1} psw {2}'.format('tuzi', 18, 123))  # 跟第一種方式差不多,只不過大括號裡面加了索引,後面的括號就是一次寫上你想輸出的東西,索引可以重複使用
    # 結果:username tuzi age 18 psw 123
    print('username {0} age {1} psw {1}'.format('tuzi', 18, 123))
    # 結果:username tuzi age 18 psw 18
    
    # 3.指名道姓的方式取值
    print('username {name} age {age} paw {paw}'.format(name='tuzi', age=18, paw=123))
    # username tuzi age 18 paw 123
    
    # 4.直接使用已經有的變數名
    name = 'tuzi'
    age = 18
    print(f'my name is {name},my age is {age},my paw = {age}')
    
  5. 拼接字串

    拼接字串可以直接使用加號和乘號,也可以使用內建方法joinjoin相當於將括號內的元素進行for迴圈,之後拿前面要拼接的符號進行拼接。

    # 可以直接使用加號
    # 乘號只能把一條字串重複幾次列印
    s1 = '我是字串一號'
    s2 = '你吃飯了嗎'
    print(s1 + s2)
    # 結果:我是字串一號你吃飯了嗎
    print(s1 * 3)
    # 結果:我是字串一號我是字串一號我是字串一號
    # join
    print('|'.join(s1))
    # 我|是|字|符|串|一|號
    print('$'.join(['tuzi','tom','jerry']))
    # 擴充套件:
    l1 = [11,'tuzi','tom']
    print('|'.join(l1))
    # 不能執行,會報錯,join只能拼接字串型別
    
  6. 替換字串中指定的字元

    # replace
    s1 = 'tuzi tuzi tuzituzi and tom tom tom 123 321 1234 tuzi tuzi'
    print(s1.replace('tuzi','meitoufa'))
    # meitoufa meitoufa meitoufameitoufa and tom tom tom 123 321 1234 meitoufa meitoufa
    # 預設是一次性替換所有
    # 也可以指定替換個數(從左往右)
    print(s1.replace('tuzi','jerry',2))  # 後面這個數字2 就是用來控制它替換的個數的
    # jerry jerry tuzituzi and tom tom tom 123 321 1234 tuzi tuzi
    # 判斷字串中是否為純數字
    # isdigit 只能判斷整數,不可以是小數或字串
    s1 = '12321321321123'
    print(s1.isdigit())  # True
    print('tuzi123'.isdigit())  # false
    print('11.11'.isdigit())  # false
    
    
  7. 查詢在指定字元對應的索引值

    find和index都可以用來查詢字元對應的索引值,但是用index查詢的字元沒有對應的索引值時,這段程式碼會報錯,所以index也不推薦使用

    # 查詢指定字元對應的索引值
    # 從左往右依次查詢,找到第一個停止
    # find
    s1 = 'tuzi tom jerry 123'
    print(s1.find('o'))  # 結果為6
    print(s1.find('1',1,8))  # 也可以定義起始位置和終止位置   結果為-1,意思就是沒找到
    # index
    print(s1.index('p'))  # 如果該字串中,沒有找到想要找的字元,那麼會直接報錯
    print(s1.index('o',1,10))  # 也可以定義位置查詢
    
  8. 文字位置改變

    center:指定寬度居中的字串,可選填充字元,預設為空格

    ljust:指定寬度左對齊的字串,可選填充字元,預設為空格

    rjust:指定寬度右對齊的字串,可選填充字元,預設為空格

    zfill:指定寬度右對齊的字串,不可選填充字元,填充字元為"0"

    name = 'tuzi'
    print(name.center(11,'*'))  # 多新增的字元和字串本身長度的和等於你所設值的長度(11)
    # 結果:****tuzi***
    print(name.ljust(12,'/'))  # 將字串左對齊,在字串後面新增字元
    # 結果:tuzi////////
    print(name.rjust(12,'-'))  # 將字串右對齊,在字串前面新增字元
    # 結果:--------tuzi
    print(name.zfill(12))  # 將字串右對齊,在字串前前面新增0,不能自定義新增,
    # 結果:00000000tuzi
    
  9. 特殊符號

    \t 製表符,空了四格

    \n 換行

    \a 特殊符號

    如果想取消他們的含義,在字串前面加一個字母r

    print('t\tu\az\ni')
    # 輸出結果: t	uz
    #           i
    
    # 取消特殊符號的含義
    print(r't\tu\az\ni')  # 取消特殊符號的含義
    # t\tu\az\ni
    
  10. 首字母大寫

    captalize:將字串的首個英文字母大寫

    s1 = 'my name is tuzi'
    print(s1.capitalize())
    # 結果:My name is tuzi
    
  11. 大小寫反轉

    swapcase:將字串的大小寫全部反轉過來,也就是字面意思,大寫轉為小寫,小寫轉為大寫

    s1 = 'my name is tUZi'
    print(s1.swapcase())
    # 結果:MY NAME IS TuzI
    
  12. 字串裡每個英文首字元大寫

    title:將字串裡的每個英文首字母大寫,並把其他的全部轉換為小寫

    s1 = 'my name is tUZi'
    print(s1.title())
    # 結果:My Name Is Tuzi
    

列表內建方法

  1. 型別轉換

    列表可以轉換支援for迴圈的資料型別:字串、字典、集合、元組。而整型和浮點型、布林型不可以轉換

    # 字串轉列表
    # a = 'tuzi'
    # a = list(a)
    # print(a)
    # 結果:['t', 'u', 'z', 'i']
    
    # 字典轉列表
    # b = {'name':'tuzi','age':18}
    # b = list(b)
    # print(b)
    # 結果:['name', 'age']
    
    # 集合轉列表
    # c = {1,2,3,4}
    # c = list(c)
    # print(c)
    # 結果:[1, 2, 3, 4]
    
    # 元組轉列表
    # d = (1,2,3,4,5)
    # d = list(d)
    # print(d)
    # 結果:[1, 2, 3, 4, 5]
    
  2. 索引取值

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print(l1[4])
    # 結果:[4, 5, 6]
    
  3. 切片操作

    顧頭不顧尾

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print(l1[1:3])  # 兩個數可以控制切片的區間,顧頭不顧尾
    # 結果:[2, 3]
    print(l1[-4:3])  # 也可以用複數取值
    # 結果:[2, 3]
    print(l1[-1:-4:-1])  # 第三個數也可以控制取值方向
    # 結果:[[4, 5, 6], 'tuzi', 3]
    
  4. 間隔

    類似於字串的步長,間隔多大,就隔幾個取幾個

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print(l1[0:4:2])
    # 結果:[1, 3]
    
  5. 統計列表中元素的個數

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print (len(l1))
    # 結果:5
    
  6. 成員運算

    最小判斷的是列表中的元素,而不是元素裡面的某一個字元

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print('t' in l1)  # False
    print('tuzi' in l1)  # True
    print(1 in l1)  # True
    
  7. 列表新增元素的方式

    尾部追加某個元素,可以是任意資料型別

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    l1.append('大不大')
    print(l1)
    # 結果:[1, 2, 3, 'tuzi', [4, 5, 6], '大不大']
    

    合併列表

    extend 加在原列表的後邊 可以看成for迴圈+append

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    l1.extend([11,22,123])
    print(l1)
    # 結果:[1, 2, 3, 'tuzi', [4, 5, 6], 11, 22, 123]
    # 用加號也能實現 (缺點就是元素如果很多,那就會大量空間)
    l1 += [77,88,99]
    print(l1)
    # [1, 2, 3, 'tuzi', [4, 5, 6], 77, 88, 99]
    

    指定位置插入'單個'元素

    用索引來定位,單個的意思是如果要插入一個列表,那麼這一整個列表都會被插在索引位置

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    l1.insert(0,123)
    print(l1)
    # 結果:[123, 1, 2, 3, 'tuzi', [4, 5, 6]]
    
  8. 刪除元素

    通用的刪除方式

    # 通用的刪除方式
    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    del l1 [0]  # 用索引來定位想要刪除的元素
    print(l1)
    # [2, 3, 'tuzi', [4, 5, 6], 77, 88, 99]
    

    就地刪除,指名道姓的刪除某個元素

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print(l1.remove('tuzi'))  # None
    print(l1)
    # [1, 2, 3, [4, 5, 6]]
    

    延遲刪除(預設是刪除尾部)

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    print(l1.pop())  # [4, 5, 6]
    print(l1)  
    # [1, 2, 3, 'tuzi']
    
  9. 修改列表元素

    用索引定位想要修改的元素

    l1 = [1, 2, 3, 'tuzi', [4, 5, 6]]
    l1[0]='tuzi'
    print(l1)
    # ['tuzi', 2, 3, 'tuzi', [4, 5, 6]]
    
  10. 排序

    sort預設是升序

    l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33]
    l2.sort()
    print(l2)
    # [11, 22, 33, 44, 55, 66, 77, 88, 99]
    

    也可以調整為降序

    l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33]
    l2.sort(reverse=True)
    print(l2)
    # [99, 88, 77, 66, 55, 44, 33, 22, 11]
    
  11. 翻轉

    將列表中的元素順序翻轉過來

    l2 = [77, 44, 11, 88, 55, 22, 99, 66, 33]
    l2.reverse()
    print(l2)
    # [33, 66, 99, 22, 55, 88, 11, 44, 77]
    
  12. 比較運算

    列表跟列表的比較大小的時候,其實是比的對應索引位置上的元素

    ss1 = [11, 22, 33]
    ss2 = [1, 2, 3]
    print(ss1 > ss2)
    # True  (列表在做比較的時候,比的對應索引位置上的元素)
    ss1 = ['A', 'B', 'C']
    ss2 = ['a', 'b', 'c']
    print(ss1 > ss2)
    # False  (字母也有相對應的值,比的是ASCII碼上對應的值)
    
  13. 統計列表中某個元素出現的個數

    使用count方法

    print(ll1.count(11))
    # 結果為:5
    
  14. 清空列表

    clear清空列表中的所有元素

    ll1 =[11,22,33,11,11,11,44,99,88,55,77,33,55,55,44,11]
    ll1.clear()
    print(ll1)
    # []
    
  15. 可變型別和不可變型別

    可變型別:列表

    值改變,記憶體地址不變,修改的是值的本身

    不可變型別 字串

    值改變,記憶體地址肯定變,修改過程中產生了新的值

    如何檢視變數的記憶體地址:id(變數名)

    # 不可變型別
    s1 = '$$$$hello$$$$'
    print(id(s1))  # 2642799506992
    s2 = s1.strip('$')
    print(s2)
    print(s1, id(s1))  # $$$$hello$$$$ 2642799506992
    # 本身沒有被修改,而是產生了新的結果
    # 可變型別
    s2 = [1, 2, 3]
    print(id(s2))  # 2965206418888
    s2.append(123)
    print(id(s2))  # 2965206418888  
    
  16. 佇列於堆疊

    佇列是先進先出,類似於超市排隊結賬,符合佇列的特徵

    堆疊是先進後廚,類似於疊衣服, 符合堆疊的特徵,一層一層往上放

    使用列表模擬出佇列於堆疊的特徵:

    # 佇列
    new_list=[]
    new_list.append(111)
    new_list.append(222)
    new_list.append(333)
    print(new_list)
    # [111, 222, 333]
    # 先出
    print(new_list.pop(0))
    print(new_list.pop(0))
    print(new_list.pop(0))
    # 111
    # 222
    # 333
    # 也可以使用for迴圈
    for i in new_list:
        print(i)
    
    # 堆疊
    # 先進
    new_list=[]
    new_list.append(111)
    new_list.append(222)
    new_list.append(333)
    print(new_list)
    #後出
    print(new_list.pop())
    print(new_list.pop())
    print(new_list.pop())
    # 333
    # 222
    # 111
    

學廢了嗎~~~