##元組冒泡法及字符串處理
元組tuple:
- 不可變對象,有序的序列。
- 使用()表示
- 空元組基本沒用,因為不可變
- 當元組只有一個元素時請用(1,)
- 支持索引(下標)
- 支持正負索引,索引不可以越界,否則引發異常indexerror
- tuple[index],index就是索引,使用中括號訪問。
- index(value,[start,[stop]])
- 通過值value,從指定區間查找列表內的元素是否匹配
- 匹配到第一個就立即返回索引
- 匹配不到,拋出異常valueerror
- count(value):返回列表中匹配value的次數
- 時間復雜度:index和count都是O(n),隨著元組元素的規模的增大,而效率下降。
- len(tuple):返回元素的個數
- 元組是只讀的,所以增刪改方法都沒有??梢岳斫獬蓹嘞薷偷牧斜?。
- 元組節約內存,比列表
- 目的:不讓其他人改變元素,可當做只讀列表
- 引用類型可以變,相當于換了一件衣服:例如:t=(1,[2,3],4):此處23可以修改
- 目的:如果tuple中的元素很多的時候操作起來就比較麻煩,有可能會由于索引錯誤導致出錯。namedtuple對象就如它的名字說定義的那樣,你可以給tuple命名。
- namedtuple方法在collections方法集中,所以使用需要from collections import namedtuple
- namedtuple(typename,field_names,verbose=False,rename=False)
- 命名元組,返回一個元組的子類,并定義了字段
- field_names可以是空格或逗號分割的字段的字符串,可以是字段的列表
練習:
- 依次接受用戶輸入的3個數,排序后打印:
- 轉換int后,判斷大小排序
- 使用max函數
- 使用列表的sort方法
- 冒泡法
- 屬于交換排序
- 兩兩比較大小,交換位置。如同水泡咕嘟咕嘟往上冒
- 結果分為升序和降序排列
- 升序:
- n個數從左至右,編號從0開始到n-1,索引0和1的值比較,如果索引0大,則交換兩者的位置,如果索引1大,則不交換。繼續比較索引1和2的值,將大值放在右側。直至n-2和n-1比較完,第一輪比較完成。第二輪從索引0比較到n-2,因為最右側n-1的位置上已經是最大值了,依次類推,每輪都會減少最右側的不參與比較,直至剩下最后兩個數比較。
- 時間復雜度為O(n2)
字符串
- 一個個字符組成有序的序列,是字符的集合
- 使用單引號,雙引號,三引號引住的字符序列
- 字符串是不可變對象
- Python3開始,字符串就是Unicode類型
- 使用r/R將字符串中的特殊字符原樣輸出
舉例:
- 下標:字符串支持索引訪問
- 有序的字符集合,字符序列
- 可迭代
- “指定分隔符”.join(iterable),用來連接字符串,其他類型不可以。
- 可迭代對象內部必須是簡單類型,復雜類型無法執行
舉例:
- +:將兩個字符串連接在一起,返回一先得字符串
- 1.split:將字符串按照分隔符分割成若干字符串,并返回列表
- split(sep=None,maxsplit=-1)
- 從左至右
- sep指定分割字符串,缺省的情況下空白字符串作為分隔符
- maxsplit指定分割次數,-1表示遍歷整個字符串
- rsplit:從右向左
- splitlines([keepends])
- 按照行來切分字符串
- keepends指的是是否保留行分隔符
- 行分隔符包括\n,\r\n,\r等
- split(sep=None,maxsplit=-1)
- 2.partition:將字符串按照分隔符分割成兩段,返回這兩段和分割符的tuple
- partition(seq)
- 從左至右,遇到分隔符就把字符串分割成兩部分,返回頭、分隔符、尾三部分的三元組;如果沒有找到分隔符,就返回頭、2個空元素的三元組
- seq分割字符串,必須制定
- rpartition(seq):從右至左,如果沒找到分割符就返回兩個空元素和尾的三元組
- upper()全大寫
- lower()全小寫
- swapcase()互換大小寫
- replace(old,new[,count]):
- 字符串中找到匹配替換為新字串,返回新字符串
- count表示替換幾次,不指定默認全部替換
- strip([chars])
- 從字符串兩端去除制定的字符集chars中的所有字符默認兩段開始,如果從某一端開始可能會影響結果
- 如果沒指定chars,默認去除端的空白字符
- lstrip([chars]):從左開始
- rstrip([chars]):從右開始
- find(sub[,start[,end]]) –>int
- 在指定區間內[start,end),從左到右查找子串sub。找到返回索引,沒找到返回-1
- rfind(sub[,start[,end]]):從右往左查
- index(sub[,start[,end]])—>int跟find區別:拋出異常與否.具體使用方法相同
- 在指定區間內[start,end),從左到右,查找子串sub,找到返回索引,沒找到拋出異常valueerror
- rindex(sub[,start[,end]]),從右到左
- endswith(suffix[,start[,end]])–>bool
- 在指定區間[start,end),字符串是否是suffix結尾
- startswith(prefix,[,start[,end]])–>bool
- 在指定區間xxx,字符串是否已prefix結尾
- isalnum()–>bool是否是字母和數字組成
- isalpha():是否是字母
- isdecimal()是否只包含十進制數字
- isdigit()是否全部數字(0-9)
- isidentifier()是不是字母和下劃線開頭,其他都是字母數字,下劃線
- islower()是否都是小寫
- isupper()是否都是大寫
- isspace()是否只包含空白字符
- 字符串的格式化是一種拼接字符串輸出樣式的手段,更方便靈活
- join拼接只能使用分隔符,且要求被拼接的是可迭代對象
- +拼接字符串還算方便,但是非字符串需要先轉換成字符串才能拼接
- format函數格式字符串語法
- “{} {xxx}”.format(*args,**kwargs)–>str
- args是位置參數,是一個元組
- kwargs是關鍵字參數,是一個字典
- 花括號表示占位符
- {}表示按照順序匹配位置參數,{n}表示取位置參數索引為n的值
- {xxxx}表示在關鍵字參數中搜索名稱一致的
- {{}}表示打印花括號
- 對齊:
- 進制:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87485