1. 程式人生 > 其它 >今日總結——字串和列表的內建方法、可變型別與不可變型別和佇列與堆疊

今日總結——字串和列表的內建方法、可變型別與不可變型別和佇列與堆疊

今日總結

  • 字串的其他內建方法

  • 必須瞭解操作

  • 列表的內建方法

  • 可變型別與不可變型別

  • 佇列與堆疊

字串的其他內建方法

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

    strip(移除用語)
    rstrip(右邊移除)
    lstrip(左邊移除) 
 用法:   
# s1 = '***owen***'
# print(s1.strip('*'))  # owen
# print(s1.rstrip('*'))  # ***owen
# print(s1.lstrip('*'))  # owen***

2 、大小寫相關操作


  lower——改成小寫
  upper——改成大寫
用法:
 # l1 = 'OweN123OH'
 # print(l1.lower())  # 將所有的英文字母改成小寫 owen123oh
 # print(l1.upper())  # 將所有的英文字母改成大寫OWEN123OH
 # print(l1.islower())  # 判斷字串中所有英文字母是不是都小寫    結果顯示為false-布林值
 # print(l1.isupper())  # 判斷字元中所有的英文字母是不是都大寫    結果顯示為false——布林值

課時補充:圖片驗證碼,之前都必須一模一樣,現在卻不用

# code = 'OwEn2'  # 定義一個驗證碼
# print('圖片驗證碼:%s' % code)  # 提示使用者驗證碼
# user_code = input('請輸入驗證碼>>>:').strip()  # 給獲取到的變數定義一個變數名,並去除首尾空格字元
# if code.lower() == user_code.lower(): 
#     print('驗證碼正確')

3 、判斷字元的開頭或者結尾是否是指定的字元

  startswith——開頭處
  endswith——結尾處
用法:
 l1 = 'lili owen jery kevin 123'
 print(l1.startswith('l'))  # 判斷'l'在不在字串中的開頭
 print(l1.startswith('lili'))  # 判斷'lili'在不在字串的開頭
 print(l1.startswith('owen'))  # 判斷'owen'在不在字串的開頭
 print(l1.endswith('3'))  # 判斷'3'在不在字串的結尾
 print(l1.endswith('123'))  # 判斷'123'在不在字串的末尾
 print(l1.endswith('jery'))  # 判斷'jery'在不在字串的末尾

4 、格式化輸出

方式1:佔位符:%s  %d
方式2:
  format方法有四種使用方法
 方法1:和佔位符一樣,使用{}佔位
      print('my name is {} my age is {}'.format('owen', 20))
  方法2:根據索引取值,可以反覆的使用 ,並且可以改變取值的內容
      print('my name is {0} {1}  my age is {1} {0}'.format('owen',20))
  方法3:根據指名道姓的方式取值
     print('my name is {name} my age is {age}'.format(name='owen', age=30))
  方法4、直接使用已經出現過的變數
name = 'owen'
age = 20
print(f'my name is {name} my age is {age}{age}')

5 、拼接字串

join——拼接
l1 = '鋤禾日當午 上班好幸苦'
l2 = '為了盤中餐 汗水都流乾'
print('|'.join(l2))  # 為|了|盤|中|餐| |汗|水|都|流|幹
#####
print('|'.join(['owen','wuhua','tony']))  # owen|wuhua|tony
print('|'.join(['owen','wuhua','tony', 22]))  # 報錯
# join的元素都必須是字串才可以,否則就會報錯

6 、替換字串中指定的字元

replace——替換字元
用法:
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony'))  # 將Owen替換成tony
預設一次性替換完
也可以指定替換的個數
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony',1))  # 指定替換其中一個,從左往右

7 、判斷字串中是否為純數字

isdigit——是否數字
用法:
l1 = 'owen111'
l2 = '123'
print(l1.isdigit())  # false
print(l2.isdigit())  # true
# 判斷使用者輸入的字串是否為純數字
score = input('score>>>:').strip()  # 獲取使用者輸入,並移除首尾空格
if score.isdigit():  # 如果字串為純數字
    score = int(score)  # 字串為整數
    print('還不錯哦')  # 列印還不錯哦
else:  # 否則
    print('再不好好寫,給你一皮錘')

瞭解操作

1 、查詢指定字元對應的索引值

find、index(找不到值時直接報錯,不推薦使用)
用法:
  l1 = 'owen mark zhuli xiaohua'
  print(l1.find('o'))  # 結果為0,從左往右開始查詢,找到第一個o就停止
  print(l1.find('n',0,2))  # 結果為-1(意思就是找不到)
  print(l1.index('m', 1, 4))  # 找不到直接報錯 不推薦使用

2 、文字位置改變

center——文字居中
ljust——文字左對齊
rjust——文字右對齊
zfill——文字前面自動填充零,文字右對齊
name = 'owen'
print(name.center(20,'*'))  # 結果為********owen********
print(name.ljust(20,'*'))  # 結果為 owen****************
print(name.rjust(20,'*'))  # 結果為****************owen
print(name.zfill(10))  # 結果為000000owen

3 、特殊符號:斜槓與一些英文字母的組合會產生特殊的 含義

 \n ——行分隔符、\t——元素分隔.....
  print('ow\nen')  |   print('ow\ten')
# 如果想取消它們的特殊含義,,可以在字串前面加r
print('ow\nen') print('ow\ten')
ow (第一行) ow en
en (第二行)

4 、captalize , swapcase , title

captalize——首字母大寫
message = 'nice to meet you!' print(message.capitalize())  # Nice to meet you!
 
 swapcase——大小寫翻轉
message = 'Have a good time'
print(message.swapcase())  # hAVE A GOOD TIME

 title——讓每個單詞的首字母大寫
 message = 'Have a good time'
 print(message.title())  # Have A Good Time

列表內建方法

1 、型別轉換

list可以轉換支援for迴圈的資料型別
  可以被for迴圈的資料型別:字串 列表 字典 元組 集合
 print(list(123))  # 報錯
 print(list(13.14))  # 報錯
 print(list('owen'))  # ['o', 'w', 'e', 'n']
 print(list({'name': 'owen', 'age': 20}))  # ['name', 'age']
 print(list((11,22,33,44,55)))  # [11, 22, 33, 44, 55]
 print(list({0,9,8,7}))  # [0, 9, 8, 7]
 print(list(True))  # 報錯

2 、常見操作

  name_list = ['owen','kary','sendy','dancy']
 1、 索引取值
   print(name_list[0])  # 結果為'owen'
    
 2、 切片操作
   print(name_list[-3:-1])  # 結果為['kary', 'sendy']
    
 3、 間隔
   print(name_list[0:4:1])  # ['owen', 'kary', 'sendy', 'dancy']
   print(name_list[0:4:3])  # ['owen', 'dancy']

 4、 統計列表中元素的個數(len)
   print(len(name_list))  # 結果為4

 5、成員運算,最小判斷單位是元素不是元素裡的單個字元
   print('o' in name_list)  #  結果為False
   print('owen' in name_list)  # 結果為True
    
  6、列表增加元素的方法
     6.1、尾部追加'單個'元素(使用append)
      name_list.append('小王')
      print(name_list)      
  # 結果為 ['owen', 'kary', 'sendy', 'dancy', '小王']

     6.2、指定位置插入'單個'元素(使用insert)
      name_list.insert(0, '嗚呼')
      print(name_list)  
# 結果為 ['嗚呼', 'owen', 'kary', 'sendy', 'dancy']

     6.3、合併列表(使用extend)
       name_list.extend([123,456,789])
       print(name_list)
# 結果為['owen', 'kary', 'sendy', 'dancy', 123, 456, 789]
""" extend可以看成是for迴圈+append """

  7、刪除元素
    7.1 通用的刪除方式(del)
     del name_list[0]
     print(name_list)  # 結果為['kary', 'sendy', 'dancy']
    
    7.2 就地刪除(remove)  # 點名要直接刪除某個元素
     name_list.remove('kary')
     print(name_list)  # 結果為['owen', 'sendy', 'dancy']
     7.3 延遲刪除(pop)
        print(name_list.pop())  # 結果為dancy,預設是尾部彈出
        print(name_list.pop(2))  # 結果為sendy,可以指定索引值,但也是從尾部彈出
    
    8、修改列表元素(id)
    print(id(name_list[1]))  # 結果為2488639686192
    name_list[1] = 'owen123'
    print(id(name_list[1]))  # 結果為2488639686192
    # 修改列表元素的地址還是一樣的
    
    9、排序(sort)
     l1 = [66,77,44,99,55,88]
     l1.sort()
     print(l1)  # 結果顯示為[44, 55, 66, 77, 88, 99]        預設為升序  
     l1.sort(reverse=True)  # 修改為降序
     print(l1)  # [99, 88, 77, 66, 55, 44]
        
    10、翻轉(reverse)
     l1 = [66,77,44,99,55,88]
     l1.reverse()  # 使列表元素前後翻轉
     print(l1)  # 結果為[88, 55, 99, 44, 77, 66]
     
     11、比較運算
      l1 = [11, 22, 33]
      l2 = [1, 2, 3, 4, 5, 6, 7, 8]
      print(l1 > l2)  # 結果為True
    '''列表之間作比較,其實比的就餓死對應索引位置上的元           素'''
     12、統計列表中某個元素出現的次數(count)
       l1 = [11,33,44,77,88,5,88,99,22,11]
       print(l1.count(11))  # 統計元素11出現的次數  結果為2
        

可變型別與不可變型別

'''
   可變型別與不可變型別
    可變型別——列表
   值改變 記憶體地址不變 修改的是本身
    不可變型別——字串
  值改變 記憶體地址肯定變因為 修改過程產生了新的值
     '''
l1 = '***owen***'
print(l1.strip('*'))  # 結果為 owen
print(l1)  # 結果為***owen***
''' 變數沒有發生改變,只是產生一個新結果 '''
l2 = [1, 2, 3]
l2.extend([11, 22, 33, 44, 55])  # 結果為None
print(l2)  # 結果為[1, 2, 3, 11, 22, 33, 44, 55]

佇列與堆疊

佇列:
    先進先出 ,就像先排隊的先買到飯先走
 new_list = []
 # 先進
 new_list.append(1)
 new_list.append(2)
 new_list.append(3)
 # 先出
 for i in new_list:
     print(i)
 print(new_list.pop(0))
 print(new_list.pop(0))
 print(new_list.pop(0))
堆疊:
   越先來的,越晚走
  new_list = []
 # 先進
 new_list.append(111)
 new_list.append(222)
 new_list.append(333)
 # 後出
 print(new_list.pop())
 print(new_list.pop())
 print(new_list.pop())

今日總結完畢~