python之字符串與序列


Day2-Night

  • Python中沒有字符這種類型,(而C中用單引號表示字符,雙引號表示字符串),python中所謂的字符,就是長度為1的字符串。
  • 字符串的內置方法(太多,不一 一敲了,列舉幾個)
    • rstrip()(末尾)/lstrip()(開頭)/strip()(兩端)【剔除字符串空白】
    • title()/lower()/upper()【調整英文字母大小寫】
      1 # coding=gbk
      2 str="MaGgie"
      3 print(str.title())#首字母大寫
      4 print(str.lower())#全小寫
      5 print(str.upper())#全大寫

       

    • count(sub[,start[,end]]):查找sub子字符串出現的次數(Python中,用方括號[]括起來表示為可選),start和end表示查找范圍
      1 str1="AbcABCabCabcABCabc"
      2 print(str1.count('ab',0,15))#2
    • find(sub[,start[,end]])或index(sub[,start[,end]]):查找某個子字符串在該字符串中的位置,若找到,則返回值是第一個字符的索引值;若找不到,則find()方法返回-1,而index()方法拋出異常(注:異常是可以被捕獲並處理的錯誤)
      1 str1="I love Ian Somerhalder"
      2 print(str1.find("Ian"))#7
      3 print(str1.find("good"))#-1
      4 print(str1.index("Ian"))#7
      5 print(str1.index("good"))#ValueError: substring not found
    • join(sub):連接字符串,但其是以字符串作為分隔符,插入到sub字符串中所有的字符之間
      1 # coding=gbk
      2 print(' '.join("text"))#t e x t
      3 print('_'.join("Maggie"))#M_a_g_g_i_e 注意,最后一個沒有_
      4 
      5 print('I'+' '+'love'+' '+'Ian')#I love Ian
      6 print(' '.join(['I','love','Ian']))#同上

      對於大量的字符串拼接來說,使用join()方法的效率比連接符號(+)要高,因為加號連接會引起內存復制以及垃圾回收操作

    • replace(old,new,[,count]):替換指定的字符串
      1 str1="I love you"
      2 print(str1.replace("you","Maggie"))#I love Maggie
    • split(sep=None,maxsplit=-1):用於拆分字符串,與join()相反
      • 不帶參數時,默認以空格為分隔符
        1 str1="I love Maggie"
        2 print(str1.split())#['I','love','Maggie']
      • 帶參數時,第一個參數為分隔符分割,后一個參數表示分割次數
        1 # coding=gbk
        2 str1='_'.join("Maggie")
        3 print(str1.split('_'))#['M','a','g','g','i','e']
        4 str2= "www.abcd.com.cn"
        5 print(str2.split('.'))#以'.'為分隔符 ['www','abcd','com','cn']
        6 print(str2.split('.',2))#分割兩次 第三次不再分割 ['www','abcd','com.cn']
  • 字符串的格式化(規范化):按統一的規格去輸出一個字符串(類比進制間的轉換)
    •  format()方法接受位置參數和關鍵字參數,二者均傳遞到replacement字段(在字符串內由大括號{}表示)【注:不要漏掉print("".format("",""))中的各類符號】
      • 不帶參數/帶位置參數/帶關鍵字參數/位置參數和關鍵字參數綜合使用
        1 # coding=gbk
        2 print("{0} love {1}".format("I","Maggie"))#I love Maggie 其中format的兩個參數({0}、{1})就叫做位置參數
        3 print("{0} love {a},{b}".format("I",a="you",b="Maggie"))#I love you,Maggie 其中,{a}、{b}就叫做關鍵字參數
        4 print('a1 = {} a2= {}  a3= {}'.format('first','second','third'))  #{}不帶參數 'a1 = first a2= second  a3= third'
        5 print('a1 = {1} a2= {0} a3= {2}'.format('first','second','third')) #{}帶位置參數的 'a1 = second a2= first  a3= third'
        6 print('your name is {name} , age is {age}'.format(name='maggie',age=19)) #'your name is maggie , age is 19' 帶關鍵字參數的
        7 print('your name is {name} , age is {age}'.format(age=19,name='maggie')) #'your name is maggie , age is 19' 同樣和位置無關
      • 打印大括號
        1 # coding=gbk
        2 print("{{0}}".format("不打印"))#{0} 打印大括號,再在外層加一層大括號即可(類似打印轉義字符\用\\)
      • 替換域的使用
        1 # coding=gbk
        2 print("{0}:{1:.2f}".format("圓周率",3.14159))#圓周率:3.14

         位置參數{1}后面的冒號表示格式化符號的開始,".2"的意思是四舍五入到保留兩位小數點,f是定點數

    • 格式化操作符:%(Python格式化符號及含義/格式化操作符的輔助指令)略...
    • Python的轉義字符及含義 略...
  • 序列:列表、元組、字符串的統稱。下面介紹一個序列常用的BIF(內置方法)
    • list([iterable]):將一個可迭代對象轉換為列表。
      • 迭代:重復反饋過程的活動,其目的通常是為了接近並達到所需的目標或結果。每一次對過程的重復稱為一次“迭代”,而每一次迭代所得到的結果即作為下一次迭代的初始值(for循環)
    • 1 # coding=gbk
      2 a=list()    #創建一個空列表
      3 print(a)    #[] 
      4 
      5 b=list("Maggie")#將字符串中的每個字符迭代放到列表中
      6 print(b)    #['M','a','g','g','i','e']
      7 
      8 c=list((1,2,3))#將元組中的每個元素迭代存放到列表中
      9 print(c)    #[1,2,3]
      10 d=list(("maggie",))#將元組中的每個元素迭代存放到列表中
      11 print(c) #['maggie']
    • tuple([iterable]):將一個可迭代對象轉換為元組
    • str(obj):把obj對象轉換為字符串
    • len(sub):返回sub參數的長度(可用str/list/tuple...)
    • max():返回序列或參數集合中的最大值
    • min():返回序列或參數集合中的最小值 【:max()和min()方法都要保證序列或參數的數據類型統一,否則出錯】
    • sum(iterable[,start]):返回序列iterable的總和,參數start默認為0,若設置參數,則表示從該值開始加起
    • sorted(iderable,key=None,reverse=False):用於返回一個排序的列表
      • 列表的內建方法 sort()和sorted()雖然效果一致,但區別:sort()是按列表原地排序,而sorted()是返回一個排序后的新列表
        1 # coding=gbk
        2 list1=[1,18,13,0,-98,34,54,76,32]
        3 list2=list1[:]        #拷貝list1
        4 list1.sort()        #從小到大排序
        5 print(list1)        #[-98, 0, 1, 13, 18, 32, 34, 54, 76] list1發生改變
        6 print(sorted(list2))#[-98, 0, 1, 13, 18, 32, 34, 54, 76] 返回一個新列表
        7 print(list2)        #[1, 18, 13, 0, -98, 34, 54, 76, 32] list2不變
    • reversed(sequence):返回逆向迭代序列的值
      • 列表的內建方法 reverse()和reversed效果雖然一致,但區別:reverse()是原地翻轉,而reversed()是返回一個翻轉后的迭代器對象
        1 # coding=gbk
        2 list1=[1,18,13,0,-98,34,54,76,32]
        3 print(reversed(list1))#<list_reverseiterator object at 0x033B0810> 返回一個迭代器對象
        4 for each in reversed(list1):
        5     print(each,end=',')#32,76,54,34,-98,0,13,18,1,
        Q:迭代器?迭代器對象?
    • enumerate(iterable):生成由二元組(就是元素數量為2的元組)構成的一個迭代對象,每個二元組是由可迭代參數的索引號及其對應的元素組成的
       1 # coding=gbk
       2 str1="Maggie"
       3 for each in enumerate(str1):
       4     print(each)
       5   #(0, 'M')
       6   #(1, 'a')
       7   #(2, 'g')
       8   #(3, 'g')
       9   #(4, 'i')
      10   #(5, 'e')
    • zip(iter1[,iter2[...]]):返回由各個可迭代參數共同組成的元組
       1 # coding=gbk
       2 str1="Maggie"
       3 list1=[1,2,3,4,5,6]
       4 for each in zip(list1,str1):
       5     print(each)
       6 #(1, 'M')
       7 #(2, 'a')
       8 #(3, 'g')
       9 #(4, 'g')
      10 #(5, 'i')
      11 #(6, 'e')
      12 
      13 tuple1=(4,5,6,7,8,9)
      14 for each in zip(list1,str1,tuple1):
      15     print(each)
      16 #(1, 'M', 4)
      17 #(2, 'a', 5)
      18 #(3, 'g', 6)
      19 #(4, 'g', 7)
      20 #(5, 'i', 8)
      21 #(6, 'e', 9)
  • End...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM