2 字串&列表&元祖&集合&字典&淺拷貝和深拷貝(針對可變物件)
阿新 • • 發佈:2018-11-26
- String'',反斜槓\代表部分符號的本意,也用於特殊字元,如換行符等
- *字串物件呼叫函式可賦值給其他物件
- 切片:擷取字串,字串變數[起始:結束:步長],包含起始值不包含結束值,步長預設為1,第一個字元的下標為0,負數則為倒數,倒數從-1開始;下標即索引
- a[::-1]倒序輸出字串
- 連線字串,必須是相同格式的字串才能運算
- +表示連線字串
- *表示複製字串
- 其他注意:
- 逗號在列印的時候表示空格
- r用在字串左邊,表示對轉義字元取消轉義作用
- \n換行
- 輸入與輸出
- print(values,sep,end,file,flush)
- values可以是任何多個無名引數,各個值之間用,相隔開,打印出來是空格隔開
- sep輸入多個列印的值時,各個值之間分割方式
- end='\n',預設換行
- file=sys.stdout設定輸出裝置,及把print中的值列印到什麼地方
- flush=F預設不重新整理,當檔案物件關閉時才將內容輸出到txt檔案中;T時,將立刻傳到txt中
- 輸出的格式化操作符:%[(name)][flags][width].[precision]typecode
- (name):字典引數,和()是一個整體,同時出現
- print('i am a %(key)s'%{key:value,key1:value1})
- flag
- +正數之前顯示'+'
- -左對齊
- 0數字之前用0填充
- %轉義出普通的%
- width顯示寬度
- precision小數點後的精度
- typecode
- %[n]d正數,佔用n個字元
- %[n].2f浮點數,設定精確到兩位小數
- %s字串或數值
- %e科學計數法
- 字串外%{key:value}
- (name):字典引數,和()是一個整體,同時出現
- print(values,sep,end,file,flush)
- input()輸入,能夠從使用者這裡獲取輸入資料,將獲取的資料賦值給相應的變數,一律以字串的形式儲存
- 字串常用函式:字串變數.函式()
- *切片:字串變數[起始:結束:步長];下標即索引,從0開始
- find檢測字串是否包含指定字元,如果是返回初始的索引值,否則返回-1
- index檢測字串是否包含指定字元,如果是返回初始的索引值,否則提示錯誤
- count返回str1在string中指定索引範圍內[start, end)出現的次數
- replace將str1中的str1替換成str2,如果指定count,則不超過count次
- split如果maxsplit有指定值,則僅分割 maxsplit 個子字串,返回字串列表
- capitalize將字串的首字母大寫
- title將字串中每個單詞的首字母大寫
- startswith/endwith檢查字串是否是以 obj 開頭/結尾, 是則返回 True,否則返回 False
- lower/upper將字串轉換為小寫/大寫
- ljust(width,'fillchar')/rjust/center(width,'fillchar')返回一個原字串左/右對齊/居中,並使用空格填充至長度 width 的新字串
- lstrip/rstrip/strip去除字串左邊/右邊/兩邊空白字元
- partition可以將字串以第一個出現的str1進行分隔成三個部分,[str1前,str1,str1後
- join有序物件中每個元素(字元)後面插入str1,構造出一個新的字串
- isspace如果 str1 中只包含空格,則返回 True,否則返回 False
- isalnum如果 str1 所有字元都是字母或數字則返回 True,否則返回 False
- isdigit如果 str1 只包含數字則返回 True 否則返回 False,小數點被認為字元
- isalpha如果 str1 所有字元都是字母 則返回 True,否則返回 False
- list[]列表
- *列表是可變物件,呼叫函式會修改原物件,並且優先修改原物件而不會賦值給其他物件
- 元素之間用,隔開,元素的型別不一定要相同
- 列表可以被索引或切片,下標從0開始
- 列表可以用'+'拼接操作
- 列表中的元素是可變有序的
- 列表中巢狀列表時,列表[第一個列表的下標][第二個列表的下標],這樣取數,並不代表陣列
- 訪問列表:列表可以被索引或切片,下標從0開始
- 操作列表:會影響原物件
- 修改:list[x]='...'
- 新增
- 列表末尾新增元素list.append('')
- 列表中任意位置新增元素list.insert(索引index,'')
- 刪除
- 刪除最後一個元素並返回刪除值list.pop(index)
- 刪除元素del list[index]
- 刪除指定元素值list.remove(元素)
- 查詢:在與不在,T or F
- 元素 in list
- 元素 not in list
- 列表相關函式:function(list)操作物件;list.fun()列表函式
- len(list)返回列表元素個數,有序物件都可操作
- max(list)返回列表元素中的最大值。預設數值型的引數,取最大值。預設字元型的引數,取字母排序靠後者
- min(list)返回列表元素中的最小值。預設數值型的引數,取最小值。預設字元型的引數,取字母排序靠前者
- list.count(obj)統計某個元素在列表中出現的次數
- extends(list)擴充套件列表,在一個列表的末尾一次性追加一個新的列表,引數為一個列表
- list.index(obj)用於從列表中找出某一個值第一個匹配項的索引位置
- list.reverse()反向列表中的元素
- list.sort(reverse=T)對列表進行排序,該方法沒有返回值。更改的是原陣列,=T則從大到小
- list.clear()用於清空列表
- list.copy()複製列表
- tuple()元祖
- 用,分隔
- tuple的元素不可變有序,但可以包含可變的元素,如列表
- 構造包含0個或者1個元素的tuple有特殊語法;tuple的輸出也是帶括號的
- tuple=()
- tuple=(1,),一個元素必須加上",",不然會返回數值或字串
- 元祖可以被索引或切片,tuple[index]
- 元祖的操作
- 刪除元祖:元祖中的元素值是不允許被單獨修改和刪除的,但是可以del tuple
- 間接刪除:list(tuple)->tuple(list),元祖轉化為列表修改後,再轉回來
- 強制型別轉換函式:list();tuple();int();str();dict()
- 多維元祖:多維元祖就是元祖中的元祖,元祖中的元素可以是一個新的元祖tuple[][]
- 多維元祖,如果元素是列表等可變物件,可以直接修改
- 刪除元祖:元祖中的元素值是不允許被單獨修改和刪除的,但是可以del tuple
- sets{}集合:確定性,互異性,無序性
- dictionary{}字典
- 對映型別,無序的鍵key:值value對集合
- 不能索引或切片
- 鍵值對用,隔開
- 鍵必須是不可變型別,且鍵必須是唯一的;值則無要求
- 對映型別,無序的鍵key:值value對集合
- 物件,都可以是變數
- 不可變:數值,字串,元祖
- 可變:列表,字典
- 可變有序:列表list[]
- 不可變有序:元祖tuple()
- 可變無序:dictionary{},sets{}
- 字典操作
- *所有物件型別都用[]來定位
- 訪問字典dict[key]
- 新增元素dict[new_key]=new_value
- 修改字典dict[key]=value
- 刪除字典del dict[key]/del dict,刪除一個元素或全部刪除
- 清空字典dict.clear()
- 字典函式
- len(dict)計算字典中元素的個數
- str(dict)輸出字典,以可列印的字串表示
- type(variable)返回輸入變數的資料型別,如果變數是字典就返回<class ‘dict’>
- dict.fromkeys(seq[,value])建立一個新字典,以序列(列表或元祖)seq中元素做字典的鍵,value為字典所有鍵對應的初始值
- dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值
- dict.setdefault(key,default=None)和get類似,鍵存在則返回值,但如果鍵不存在於字典中,將會新增鍵並將值設為default
- key in dict如果鍵在字典dict裡返回true,否則返回false
- dict.keys()以列表返回一個字典所有的鍵
- dict.values()以列表返回一個字典中的所有值
- 淺拷貝
- 方法
- copy.copy():copy模組的copy方法
- list.copy():列表物件的copy方法
- list[:]:列表起始到結束的切片
- list(list):強制型別轉換物件的型別
- 可變物件裡面的子物件是不可變物件時,修改子物件不會影響原物件;子物件是可變物件時,修改子物件會影響原物件和其他淺拷貝物件
- 方法
- 深拷貝
- 方法
- copy.deepcopy():copy模組的deepcopy方法
- 不管你的子物件是可變還是不可變物件,都不會影響原物件
- 方法
- 特點:修改的是物件的元素
- 可變物件:修改物件(是方法等)是在原物件的基礎上進行修改,沒有返回值
- 不可變物件:修改物件是不會影響原物件,有返回值
- 可變物件的直接賦值:相當於雙胞胎,幾乎一致,任何修改都相互影響
- 列表
- 增
- list.append()列表末尾新增元素
- list.insert(index,'')列表中任意位置新增元素
- list.extend()列表的末尾一次性追加一個新的列表
- 刪
- list.remove(value)刪除指定元素值
- list.pop()刪除最後一個元素並返回刪除值,即彈出
- list.clear()清空列表
- del list[index]刪除元素
- 改
- list[index]=''
- 查
- list[index]
- list.index(元素)返回元素索引
- 增
- 元祖:無法直接增刪改查,可以轉換成列表進行增刪改查
- 字典:
- 增
- dict[new_key]=new_value新增元素
- dict.setdefault(key,default=None)和get類似,鍵存在則返回值,但如果鍵不存在於字典中,將會新增鍵並將值設為default
- dict.update(dict1)將字典物件新增到dict中
- 刪
- del dict[key]/del dict,刪除一個元素/全部刪除
- dict.clear()清空字典
- dict.pop(key,default=None)至少需要1個變數,沒有則報錯,因為是無序的不能彈出最後一個,根據key刪除鍵,沒有則default(default必須有)
- dict.popitem()隨意刪除1個key:value
- 改
- dict[key]=value修改字典
- 查
- dict[key]檢視值
- dict.keys()
- dict.values()
- dict.item()遍歷key:value
- dict.get(key,default=None)返回指定鍵的值,如果值不在字典中返回default值
- 增
- 內建函式:dir(__builtins__)查詢
- 數學運算
- abs
- divmod返回兩個數值的商和餘數組成的元祖
- max返回可迭代物件中的最大值
- min
- pow前兩個引數是冪運算值,第三個引數取模運算
- round
- sum對元素型別是數值的可迭代物件中的每個元素進行求和,sum(list)
- 型別轉換
- bool根據你所傳入的引數的邏輯值進行判斷,返回True或者False;有元素存在即T,沒有為F
- int不識別字符串
- float識別字符串
- complex
- str
- bin將整數轉換成2進位制字串
- oct將整數轉換成8進位制字串
- hex將整數轉換成16進位制字串
- tuple將傳入的引數轉換成元祖
- list
- dict
- enumerate根據可迭代物件建立列舉物件,具體為list(enumerate(list))=[(0,list_element_1),(1,list_element_2)]
- range根據所傳入的引數建立一個新的range物件,range(start,end,step),左閉右開,一般配合list(range())
- 一個數字x代表從0開始的x個元素的序列
- slice返回的是切片物件,一般配合為list(range()[slice()]),slice(start,end,step)左閉右開
- 序列操作:
- all判斷可迭代物件的每個元素是否都為True,list中的0即為F,空list和空tuple為T
- any判斷可迭代物件裡面的元素是否有True值的元素,空list和空tuple為F
- filer
- map
- next
- reversed反轉序列生成新的可迭代物件,list(reversed(range()))
- sorted預設從小到大排序,sorted(list,reverse=F)
- zip將傳入的兩個序列位置元素一一對應,返回一個新的迭代物件;只返回能對應的對映,不會迴圈,取較少的序列的元素個數
- 物件操作:
- help返回物件的幫助資訊,help(list)
- dir返回當前作用域的屬性列表,包含物件的方法
- id返回物件的唯一標誌,在淺拷貝中出現的概念,可變物件指向某個id
- type
- len
- format
- vars返回當前作用域方法或者屬性與值組成的字典,或者屬性列表,var(list)
- 互動操作:
- input
- 編譯執行:
- eval執行字串型別表示式的值,print(eval()),eval有返回值
- exec直接執行復雜的python程式碼,exec(''),exec沒有返回值
- 數學運算
-
-
-
- ee=input('請輸入你要計算的求和式子:'),ee擷取輸入,轉化為string
- print(eval(ee))直接輸出求和結果
-
-