1. 程式人生 > 其它 >字串的其他內建方法和列表的內建方法

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

字串的其他內建方法(非常重要)

這些內建是在我們寫程式的時候會經常用到的,使用我們有必要全部記住,就算不能全部記住,我們也需要知道字串有的內建函式。

1.移除字串首尾的指定字元 我們可以選擇移除的方向預設是兩邊全部,不填寫指定字元就是移除空格。
str = '!!!!春遊去動物園!!!'
print(str.strip('!'))  # 春遊去動物園
print(str.lstrip('!'))  # 春遊去動物園!!! 移除左邊
print(str.rstrip('!'))  # !!!!春遊去動物園 移除右邊

2.大小寫
str2 = 'aBcD'
print(str2.lower())  # abcd 將所有的英文字母變為小寫
print(str2.upper())  # ABCD 將所有的英文字母變為大寫
print(str2.islower())  # False 判斷字串中所有的英文字母是否是純小寫  返回值是布林值
print(str2.isupper())  # False 判斷字串中所有的英文字母是否是純大寫  返回值是布林值

3.判斷字串的開頭或者結尾是否是指定的字元
str3 = 'hello world'
print(str3.startswith('h'))  # True
print(str3.startswith('hello'))  # True
print(str3.startswith('world'))  # False
print(str3.endswith('d'))  # True
print(str3.endswith('world'))  # True
print(str3.endswith('hello'))  # False

4.格式化輸出
第一種:和佔位符用法一樣,但是使用{}佔位
print('I am {},hobby is {}'.format('春遊去動物園','玩'))

第二種:根據索引取值  可以反覆使用
print('I am {0} {0} {1},hobby is {1} {0}'.format('春遊去動物園','玩'))
I am 春遊去動物園 春遊去動物園 玩,hobby is 玩 春遊去動物園

第三種:根據指名道姓的方式取值
print('I am {name} {hobby},hobby is {name}{hobby}'.format(name = '春遊去動物園',hobby = '玩'))
I am 春遊去動物園 玩,hobby is 春遊去動物園玩

第四種:直接使用已經出現過的變數
name = '春遊去動物園'
hobby = '玩'
print(f'I am {name} {hobby},hobby is {hobby} {name}')
I am 春遊去動物園 玩,hobby is 玩 春遊去動物園
千萬不要忘了在要格式化輸出的字串前加f!!!!!!

5.拼接字串
str5 = '少壯不努力'
str5_1 = '老來靠吉言'
print(str5 + str5_1)#少壯不努力老來靠吉言
print(str5 * 5)#少壯不努力少壯不努力少壯不努力少壯不努力少壯不努力
print('|'.join(str5))#少|壯|不|努|力
print('*'.join(['1', '2', '3', '4', '5']))#1*2*3*4*5
join的元素必須都是字串才可以 否則報錯

6.替換字串中指定的字元
str6 = 'hello hello hello world hero hello'
替換全部
print(str6.replace('hello', '111'))  #111 111 111 world hero 111
替換指定的個數(從左往右)
print(str6.replace('hello', '111', 1))  #111 hello hello world hero hello

7.判斷字串中是否是純數字
str7 = 'qwe123'
print(str7.isdigit())  # False
print('123'.isdigit())  # True
print('123.123'.isdigit())  # False

需要了解的操作

 1.查詢指定字元對應的索引值
 s1 = 'jason justin kevin tony'
 print(s1.find('s'))  # 從左往右查詢 查詢一個就結束
 print(s1.find('k', 1, 9))  # -1 意思是沒有 找不到
 print(s1.index('s'))
 print(s1.index('k', 1, 9))  # 找不到直接報錯 不推薦使用

 2.文字位置改變
 name = 'tony'
 print(name.center(30, '-'))  # -------------tony-------------
 print(name.ljust(30, '*'))  # tony**************************
 print(name.rjust(30, '$'))  # $$$$$$$$$$$$$$$$$$$$$$$$$$tony
 print(name.zfill(50))  # zero 零  0000000000000000000000000000000000000000000000tony

 3.特殊符號:斜槓與一些英文字母的組合會產生特殊的含義
 print('ja\tson\nke\avin')
'''如果想取消它們的特殊含義 可以在字串的前面加一個字母r'''
 print(r'ja\tson\nke\avin')

 4.capitalize,swapcase,title
 4.1 captalize:首字母大寫
 message = 'hello everyone nice to meet you!'
 message.capitalize()
 Hello everyone nice to meet you!
 4.2 swapcase:大小寫翻轉
 message1 = 'Hi girl, I want make friends with you!'
 message1.swapcase()
 hI GIRL, i WANT MAKE FRIENDS WITH YOU!
 4.3 title:每個單詞的首字母大寫
 msg = 'dear my friend i miss you very much'
 msg.title()
 Dear My Friend I Miss You Very Much

列表內建方法

1.型別轉化
print(list('春遊去動物園'))  # ['春', '遊', '去', '動', '物', '園']
print(list({'name': '春遊去動物園', 'password': 123}))  # ['name', 'password']
print(list((11, 22, 33, 44, 55)))  # [11, 22, 33, 44, 55]
print(list({1, 2, 3, 4, 5}))  # [1, 2, 3, 4, 5]

"""
    list可以轉換支援for迴圈的資料型別
        可以被for迴圈的資料型別
            字串 列表 字典 元組 集合
"""

2.常見操作
data = ['春', '遊', '去', '動', '物', '園']

  1.索引取值
  print(data[0])  # 春

  2.切片操作
  print(data[1:3])  # ['遊', '去']
  print(data[-1::-1])  # ['園', '物', '動', '去', '遊', '春']

  3.間隔
  print(data[1:5:2])  # ['遊', '動']

  4.統計列表中元素的個數
  print(len(data))  # 6

  5.成員運算 最小判斷單位是元素不是元素裡面的單個字元
  print('春' in data)  # True
  print('111' in data)  # False

  6.列表新增元素的方式
    1.尾部追加'單個'元素
    data.append('去')
    print(data)  # ['春', '遊', '去', '動', '物', '園', '去']
    data.append(['遊樂園'])
    print(data)  # ['春', '遊', '去', '動', '物', '園', '去', ['遊樂園']]

    2.指定位置插入'單個'元素
    data.insert(0, '我')
    print(data)  # ['我', '春', '遊', '去', '動', '物', '園']
    data.insert(4, '去哪')
    print(data)  # ['我', '春', '遊', '去', '去哪', '動', '物', '園']

    3.合併列表
    data.extend([11, 22, 33, 44, 55])
    print(data)  # ['春', '遊', '去', '動', '物', '園', 11, 22, 33, 44, 55]
    '''extend其實可以看成是for迴圈+append'''
    data += [11,22,33,44] # 加號的效率不高
  
  7.刪除
    1.通用的刪除方式
    del data[0]
    print(data)#['遊', '去', '動', '物', '園']
    
    2.指名道姓的直接刪除某個元素
    data.remove('去')
    print(data)  # ['春', '遊', '動', '物', '園']
    
    3.延遲刪除
    data.pop()  # 預設是尾部彈出
    print(data)  # ['春', '遊', '去', '動', '物']
    data.pop(1)
    print(data)  # ['春', '去', '動', '物', '園']
    data.pop(0)
    print(data)  # ['遊', '去', '動', '物', '園']

  8.修改列表元素
  data[0] = '秋'
  print(data)  # ['秋', '遊', '去', '動', '物', '園']

  9.排序
  data_number = [1, 5, 3, 6, 8, 0, 66]
  data_number.sort()  # 預設是升序
  print(data_number)  # [0, 1, 3, 5, 6, 8, 66]
  data_number.sort(reverse=True)  #降序
  print(data_number)  # [66, 8, 6, 5, 3, 1, 0]

  10.反轉
  data.reverse()  #順序顛倒,(前面的到後面去)
  
  11.比較運算
  s1 = [11, 22, 33]
  s2 = [1, 2, 3, 4, 5, 6, 7, 8]
  print(s1 > s2)  # True
  """列表在做比較的時候 其實比的是對應索引位置上的元素"""
  s1 = ['A', 'B', 'C']  # A>>>65
  s2 = ['a']  # a>>>97
  print(s1 > s2)  # False
  """如果比較的2個是字母,將會根據字母的ASCII碼值來進行比較。"""
  
  12.統計列表中某個元素出現的次數
  l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33]
  print(l1.count(11))  # 統計元素11出現的次數
  l1.clear()  # 清空列表

可變型別和不可變型別

    可變資料型別:列表list和字典dict;不可變資料型別:整型int、浮點型float、字串型string和元組tuple。

  """
     可變型別與不可變型別
    可變型別     列表
        值改變 記憶體地址不變 修改的是本身
    不可變型別   字串
        值改變 記憶體地址肯定遍 修改過程產生了新的值
如何檢視變數的'記憶體地址'
id(變數名)
"""

佇列和堆疊

Stack(棧):資料先進後出,類比放盤子,最先放的盤子最後拿出;最後放的盤子最先拿出

進棧:向一個棧插入新元素,它是把新元素放到棧頂元素的上面,變成新的棧頂元素;

出棧:從一個棧刪除元素,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

####Queue(佇列):資料先進先出 特點: (1)佇列中的資料元素遵循“先進先出”(First In First Out)的原則,簡稱FIFO結構。

(2)在隊尾新增元素,在隊頭刪除元素。