如:2一、4五、56python
每個整數都具有以下功能:linux
1 - int 2 將字符串轉換爲數字 3 例子: 4 a = "123" 5 print(type(a),a) 6 輸出結果: 7 >>> a = "123" 8 >>> print(type(a),a) 9 <class 'str'> 123 10 11 b = int(a) 12 print(type(b),b) 13 14 輸出結果: 15 >>> b = int(a) 16 >>> print(type(b),b) 17 <class 'int'> 123 18 19 num = "0022" 20 v = int(num, base=16) 21 print(v) 22 23 輸出結果: 24 >>> num = "0022" 25 >>> v = int(num, base=16) 26 >>> print(v) 27 34 28 29 - bit_length 30 #當前數字的二進制,至少用n位表示 31 age = 22 32 v = age.bit_length() 33 print(v) 34 35 輸出結果: 36 >>> age = 22 37 >>> v = age.bit_length() 38 >>> print(v) 39 5
一、name.capitalize() #首字母大寫git
例子:api
>>> test = "zhUrui" >>> v = test.capitalize() >>> print(v) Zhurui
二、name.casefold() #全部變小寫,casefold更牛逼,不少未知的對相應變小寫app
例子:ide
>>> test = "zhUrui" >>> v1 = test.casefold() >>> print(v1) zhurui >>> v2 = test.lower() >>> print(v2) zhurui
三、name.center() #設置寬度,並將內容居中 測試
name.ljust() #設置寬度,變量向左,其餘部分用所定義的填充符 填充ui
name.rjust() #設置寬度,變量向右,其餘部分用所定義的填充符 填充編碼
name.zfill() #設置寬度,默認變量向右,其餘部分用zfill方法特定的填充符"000" 填充spa
>>> test = "zhurui" >>> v = test.center(20,"中") >>> print(v) 中中中中中中中zhurui中中中中中中中 解釋: # 20 代指總長度 # * 空白未知填充,一個字符,無關緊要 輸出結果: 中中中中中中中zhurui中中中中中中中 ########################################## >>> test = "zhurui" >>> v = test.ljust(20,"*") #ljust 變量靠左,其餘部分用*填充 >>> print(v) zhurui************** ################################## >>> test = "zhurui" >>> v = test.rjust(20,"*") #rjust 變量靠右,其餘部分用*填充 >>> print(v) **************zhurui
>>> test = "zhurui" >>> v = test.zfill(20) ##zfill只能用於000填充 >>> print(v) 00000000000000zhurui
4、name.count() #去字符串中尋找,尋找子序列的出現次數
>>> test = "Zhuruizhuruiru" >>> v = test.count('ru') >>> print(v) 3 >>> v = test.count('z') >>> print(v) 1 ######################################### >>> test = "Zhuruizhuruiru" >>> v = test.count('ru', 5, 6) >>> print(v) 0
五、name.encode() #將字符串編碼成bytes格式
六、name.decode()
七、name.endswith("ui") #判斷字符串是否以ui結尾
name.startswith('ui') #判斷字符串是否以ui開始
>>> test = "zhurui" >>> v = test.endswith('ui') >>> print(v) True >>> v = test.startswith('ui') >>> print(v) False
八、"Zhu\tRui".expandtabs(10) #輸出‘Zhu Rui’, 將\t轉換爲多長的空格
>>> test = "Zhu\tRui" >>> v = test.expandtabs(10) >>> print(v) Zhu Rui ################################ test = "username\tpassword\temail\nzhurui\t123456\t24731701@qq.com\nzhurui\t123456\t24731701@qq.com\nzhurui\t123456\t24731701@qq.com" v = test.expandtabs(20) print(v) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day1/logging.py username password email zhurui 123456 24731701@qq.com zhurui 123456 24731701@qq.com zhurui 123456 24731701@qq.com
九、name.find(A) #從開始日後找,找到第一個以後,獲取其位置即索引,找不到返回-1
## > 或 >=
# 未找到 -1
>>> test = "williamwilliam" >>> v = test.find('am') >>> print(v) 5 >>> v = test.find('t') #找變量中的"t"字符, >>> print(v) -1 ##沒有找到,返回負一
十、name.index('a') #找不到,報錯
>>> test = "williamwilliam" >>> v = test.index('a') >>> print(v) 5 >>> v = test.index('8') ##找字符串中是否 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
十一、name.format() #格式化,將一個字符串中的佔位符替換爲指定的值
>>> test = 'i am {name}, age {a}' >>> print(test) i am {name}, age {a} >>> v = test.format(name='william',a=22) >>> print(v) i am william, age 22
>>> test = 'i am {0},age {1}' >>> print(test) i am {0},age {1} >>> v = test.format('william', 22) >>> print(v) i am william,age 22
十二、name.format_map() #格式化, 傳入的值{"name": 'william', "a": 22}
>>> test = 'i am {name}, age {a}' >>> v1 = test.format(name='zhurui',a=22) >>> v2 = test.format_map({"name":'zhurui', "a": 19}) >>> print(v1) i am zhurui, age 22 >>> print(v2) i am zhurui, age 19
1三、name.isalnum() #字符串中是否只包含 字母和數字
>>> test = "234" >>> v = test.isalnum() >>> print(v) True
1四、name.isalpha() #是不是字母,漢字
>>> test = "asfdge242" >>> v = test.isalpha() >>> print(v) False >>> test = "威廉" >>> v = test.isalpha() >>> print(v) True
1五、判斷輸入的是不是數字
>>> test = "二" # 1 , ② >>> v1 = test.isdecimal ##判斷十進制小數 >>> v2 = test.isdigit() >>> v3 = test.isnumeric() ##判斷漢語的數字,好比 "二" >>> print(v1,v2,v3) <built-in method isdecimal of str object at 0x00000201FE440AB0> False True
1六、name.isprintable() #判斷是否存在不可顯示的字符
\t 製表符
\n 換行
>>> test = "qepoetewt\tfdfde" >>> v = test.isprintable() >>> print(v) False >>> test = "qepoetewtfdfde" >>> v = test.isprintable() >>> print(v) True
1七、name.isspace() #判斷是否所有是空格
>>> test = "" >>> v = test.isspace() >>> print(v) False >>> test = " " >>> v = test.isspace() >>> print(v) True
1八、name.istitle() #判斷是不是標題,其中必須首字母大寫
>>> test = "Return True if all cased characters in S are uppercase" >>> v1 = test.istitle() >>> print(v1) False >>> v2 = test.title() #將字符串首字母大寫 >>> print(v2) Return True If All Cased Characters In S Are Uppercase >>> v3= v2.istitle() >>> print(v3) True
1九、***** name.join() #將字符串中的每個元素按照指定分隔符進行拼接(五星重點參數)
>>> test = "出任CEO迎娶白富美" >>> print(test) 出任CEO迎娶白富美 >>> v = '_'.join(test) >>> print(v) 出_任_C_E_O_迎_娶_白_富_美 >>>
20、name.islower() #判斷是否所有是大小寫 和 轉換爲大小寫
>>> test = "William" >>> v1 =test.islower() #判斷是否全都是小寫 >>> v2 = test.lower() #將變量轉換爲小寫 >>> print(v1, v2) False william >>> ################################### >>> test = "William" >>> v1 =test.isupper() #判斷是否全都是大寫 >>> v2 = test.upper() #將變量轉換爲大寫 >>> print(v1, v2) False WILLIAM
2一、移除指定字符串,優先最多匹配
>>> test = 'xa' >>> v1 =test.isupper() >>> v = test.lstrip("xa") >>> print(v) >>> v = test.rstrip("92exxxexxa") >>> print(v) >>> v = test.strip("xa") >>> print(v) ################################### # test.lstrip() # test.rstrip() # test.strip() # 去除左右空白 # v = test.lstrip() # v = test.rstrip() # v = test.strip() # print(v) # print(test) # 去除\t \n # v = test.lstrip() # v = test.rstrip() # v = test.strip() # print(v)
2二、對應關係替換
>>> test = "aeiou" >>> test1 = "12345" >>> v = "asidufkasd;fiuadkf;adfkjalsdjf" >>> m = str.maketrans("aeiou", "12345") >>> new_v = v.translate(m) >>> print(new_v) 1s3d5fk1sd;f351dkf;1dfkj1lsdjf
2三、name.partition() #分割爲三部分
>>> test = "testegerwerwegwewe" >>> v = test.partition('s') >>> print(v) ('te', 's', 'tegerwerwegwewe') >>> v = test.rpartition('s') >>> print(v) ('te', 's', 'tegerwerwegwewe') >>>
2四、name.split() #分格爲指定個數
>>> test = "sagesgegessress" >>> v = test.split('s',2) >>> print(v) ['', 'age', 'gegessress'] >>>
2五、分割, 只能根據,true, false:是否保留換行
>>> test = "fwerwerdf\frweqnndasfq\fnaqewrwe" >>> v = test.splitlines(False) >>> print(v) ['fwerwerdf', 'rweqnndasfq', 'naqewrwe']
2六、以xxx開頭,以xx結尾
>>> test = "backend 1.2.3.4" >>> v = test.startswith('a') >>> print(v) False >>> test.endswith('a') False
2七、name.swapcase() #大小寫轉換
>>> test = "WiiLiAm" >>> v = test.swapcase() >>> print(v) wIIlIaM
2八、name.isidentifier() #字母,數字,下劃線 :標識符 def class
>>> a = "def" >>> v = a.isidentifier() >>> print(v) True
2九、name.replace() #將指定字符串替換爲指定字符串,替換功能至關於sed
>>> test = "williamwilliamwilliam" >>> v = test.replace("am", "bbb") >>> print(v) willibbbwillibbbwillibbb >>> v = test.replace("am", "bbb",2) >>> print(v) willibbbwillibbbwilliam >>>
################7個基本魔法################# join # '_'.join("asdfdfsdsf") split find strip upper lower replace(至關於sed替換功能) ################4個灰魔法################# 1、for循環 格式: for 變量名 in 字符串: 變量名 break continue 例子: test = "好看的妹子有種衝我來" for item in test: print(item) break 輸出結果爲: 好 例子2: test = "好看的妹子有種衝我來" index = 0 while index < len(test): v = test[index] print(v) index += 1 print('============') 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day12/index1.py 好 看 的 妹 子 有 種 衝 我 來 ============ 例子3:(比較break跟continue的區別) test = "好看的妹子有種衝我來" for item in test: print(item) break 輸出結果爲: 好 for item in test: print(item) continue 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day12/index1.py 好 看 的 妹 子 有 種 衝 我 來 2、索引,下標,獲取字符串中的某一個字符 test = "好看的妹子有種衝我來" v = test[3] print(v) 輸出結果爲: 妹 3、切片 v = test[0:1] #標識大於等於0,小於1(0<= <1) print(v) 輸出結果爲: 好 4、獲取長度 Python3: len獲取當前字符串中由幾個字符組成 v = len(test) print(v) 輸出結果爲: 10 注意: len("asdf") for循環 索引 切片
5、獲取連續或不連續的數字 Python2中直接建立在內容中 Python3中只有for循環時,才一個一個建立 例子: r1 = range(10) print(r1) 輸出結果爲: 10 range(0, 10) 執行for循環時: 纔會一個一個建立打印 r2 = range(1,10) r3 = range(1,10,2) 幫助建立連續的數字,經過設置步長來指定不連續 v = range(0, 100, 5) #括號中的5表明步長 for item in v: print(item)
練習題:根據用戶輸入的值,輸出每個字符以及當前字符所在的索引位置
將文字 對應的索引打印出來: 方法1: test = input(">>>") print(test) # test = qwe test[0] test[1] l = len(test) # l = 3 print(l) r = range(0,l) # 0,3 for item in r: print(item, test[item]) # 0 q,1 w,2 e 方法2: test = input('>>>') for item in range(0, len(test)): print(item, test[item])
##################### 1個深灰魔法 ###################### 字符串一旦建立,不可修改 一旦修改或者拼接,都會形成從新生成字符串 name = "william" age = "22" info = name + age print(info)
如:["william",'zhurui']、["ray","william"]
一、列表格式
# 中括號括起來 # , 逗號分隔每一個元素 # 列表中的元素能夠是 數字,字符串,列表,布爾值.. 全部的都能放進去 # 「集合」, 內部放置任何東西
二、列表中能夠嵌套任何類型
# 列表中的元素能夠是 數字,字符串,列表,布爾值.. 全部的都能放進去 # 「集合」, 內部放置任何東西
三、索引取值
# list # 類,列表 li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] # 經過list類建立的對象,li >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> print(li[2]) 9 >>> print(li[4][0]) 朱銳
四、切片,切片結果也是列表
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> print(li[3:-1]) ['age', ['朱銳', ['19', 10], '朱'], 'william']
五、列表是可迭代的因此for循環、while循環都通用
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> for item in li: ... print(item) ... 1 12 9 age ['朱銳', ['19', 10], '朱'] william True >>>
六、經過索引的方式修改
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[0] = "zhurui" >>> print(li) ['zhurui', 12, 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>> li[1] = [11,22,44] #將原來索引1所對應內存中的12,賦值一個新的列表[11,22,44] >>> print(li) ['zhurui', [11, 22, 44], 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>>
七、經過切片的方式修改列表中的元素
#修改中還有一個特殊的方法del >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> del li[1] >>> print(li) [1, 9, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>> #經過切片的方式刪除 >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> del li[2:6] #2<= <6 >>> print(li) [1, 12, True] >>> #經過切片的方式修改 >>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[1:3] = [120,90] >>> print(li) [1, 120, 90, 'age', ['朱銳', ['19', 10], '朱'], 'william', True] >>>
八、in 操做
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> v1 = "朱銳" in li >>> print(v1) False >>> v2 = "age" in li >>> print(v2) True >>> v3 = "william" in li >>> print(v3) True
九、操做
>>> li = [1, 12, 9, "age", ["朱銳", ["19", 10], "朱"], "william", True] >>> li[4][1][0] '19'
十、轉換
>>> s = 123 >>> a = "123" >>> int(a) #將字符串轉換爲數字 123 >>> a = 123 >>> str(a) #將數字轉換爲字符串 '123' ##字符串轉換爲列表 >>> li = list("asdfgeqrererdfgaf") #字符串轉換爲列表實質是內部使用了for循環 >>> print(li) ['a', 's', 'd', 'f', 'g', 'e', 'q', 'r', 'e', 'r', 'e', 'r', 'd', 'f', 'g', 'a', 'f'] >>> >>> s = "erewsfsasdfe" >>> new_li = list(s) >>> print(new_li) ['e', 'r', 'e', 'w', 's', 'f', 's', 'a', 's', 'd', 'f', 'e'] ##列表轉換爲字符串,有兩種處理方法: 1、須要本身寫for循環一個一個處理: >>> li = [12,14,146,"343","william"] >>> r = str(li) >>> print(r) [12, 14, 146, '343', 'william'] #當直接將列表使用str轉換爲字符串時,其餘的都無變化,只是雙引號變爲單引號 >>> s = "" #定義一個空的字符串 >>> for i in li: #循環列表 ... s += str(i) #使用for循環將列表中的元素轉換爲字符串與空字符串相加,獲得新的變量s ... >>> print(s) 1214146343william 2、直接使用字符串join方法:只僅僅適用於列表中的元素只有字符串 >>> li = ["4324","william"] >>> v = "".join(li) >>> print(v) 4324william ##補充:字符串建立後,不可修改 >>> v = "william" >>> v = v.replace('w','am') #使用字符串的方法,將w替換爲am >>> print(v) amilliam >>> li = [11,232,434,45] >>> li[0] 11 >>> li[0] = 999 #從新賦值標識爲的值 >>> print(li) [999, 232, 434, 45] ##字符串建立後,若是修改會報錯 >>> s = "william" >>> s[0] 'w' >>> s[0] = "E" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
一、原來值最後追加,不須要再定義變量
#參數 # 對象.方法(..) #li對象調用append方法 >>> li = [13,15,45,56,78] >>> li.append(5) >>> li.append("william") >>> li.append([134,34232]) >>> print(li) [13, 15, 45, 56, 78, 5, 'william', [134, 34232]] >>>
二、清空列表
>>> print(li) [13, 15, 45, 56, 78, 5, 'william', [134, 34232]] >>> v = list(li) >>> print(v) [13, 15, 45, 56, 78, 5, 'william', [134, 34232]] >>> v.clear() >>> print(v) [] #列表爲空
三、拷貝,淺拷貝,須要新值接收
>>> li = [12,13,14,15,16] >>> v = li.copy() >>> print(v) [12, 13, 14, 15, 16] >>>
四、計算元素出現的次數
>>> li = [12,13,14,13,16] >>> v = li.count(13) >>> print(v) 2
五、擴展原列表,參數:可迭代對象,內部執行for循環
>>> li = [11,22,33,44,22,45] >>> li.append([798, "朱銳"]) >>> print(li) [11, 22, 33, 44, 22, 45, [798, '朱銳']] >>> >>> li.extend([798,"朱銳"]) #extend的實質就是下面執行的for循環中append追加 >>> print(li) [11, 22, 33, 44, 22, 45, [798, '朱銳'], 798, '朱銳'] >>> for i in [798, "朱銳"]: ... li.append(i) ... >>> print(li) [11, 22, 33, 44, 22, 45, [798, '朱銳'], 798, '朱銳', 798, '朱銳']
六、根據值獲取當前值索引位置(左邊優先)
>>> li = [12,14,15,16,18,45] >>> v = li.index(15) >>> print(v) 2
七、在指定索引位置插入元素
>>> li = [12,14,15,16,18,45] >>> li.insert(0,99) >>> print(li) [99, 12, 14, 15, 16, 18, 45]
八、刪除某個值(1.指定索引;2.默認最後一個),並獲取刪除的值
>>> li = [12,14,15,16,18,45] >>> v = li.pop() >>> print(li) [12, 14, 15, 16, 18] >>> print(v) 45 >>> >>> li = [12,14,15,16,18,45] >>> v = li.pop(3) #跟索引的值,刪除索引的值 >>> print(li) [12, 14, 15, 18, 45] >>> print(v) 16
九、刪除列表中的指定值,左邊優先
>>> li = [12,14,15,16,18,45] >>> li.remove(14) >>> print(li) [12, 15, 16, 18, 45]
十、將當前列表進行翻轉
>>> li = [12,14,15,16,18,45] >>> li.reverse() >>> print(li) [45, 18, 16, 15, 14, 12] >>>
十一、列表的排序
>>> li = [13,34,23,12,45,67] >>> li.sort() >>> print(li) [12, 13, 23, 34, 45, 67] >>> li.sort(reverse=True) >>> print(li) [67, 45, 34, 23, 13, 12]
後面更新:
#cmp
#key
#sorted
################################################ # 列表,有序,元素能夠被修改 # 列表 # list # li = [111.345,345,456] ################################################ # 元祖,元素不可被修改,不能被增長或者刪除 # tuple # tu = (11,22,33,44,) # tu.count(22) 獲取指定元素在元祖中出現的次數 # tu.index(22)
一、書寫格式
# tu = (123,"william",(11,22),[(33,34)],True,34,56,) # 通常寫元祖的時候,推薦在最後加,"逗號"; # 元素不可被修改,不能被增長或者刪除
二、索引
>>> tu = (123,"william",(11,22),[(33,34)],True,34,56,) >>> v = tu[1] >>> print(v) william
三、切片
>>> tu = (123,"william",(11,22),[(33,34)],True,34,56,) >>> r = tu[0:2] >>> print(r) (123, 'william')
四、能夠被for循環,可迭代對象
>>> tu = (123,"william",(11,22),[(33,34)],True,34,56,) >>> for item in tu: ... print(item) ... 123 william (11, 22) [(33, 34)] True 34 56
五、轉換
>>> s = "asdfgher" >>> li = ["asdfg","asgewerf"] >>> tu = ("asdf","asfdf") >>> v = tuple(s) #字符串轉換爲元祖 >>> print(v) ('a', 's', 'd', 'f', 'g', 'h', 'e', 'r') >>> v = tuple(li) #列表轉換爲元祖 >>> print(v) ('asdfg', 'asgewerf') >>> v = "_".join(tu) #使用分隔符,將元祖分開 >>> print(v) asdf_asfdf >>> li = ["asdf","asdfdghsd"] >>> li.extend((11,22,33)) #列表後面追加元祖,效果就是將元祖的特徵小括號去掉,直接將元素追加到後面 >>> print(li) ['asdf', 'asdfdghsd', 11, 22, 33]
六、元祖的一級元素不可修改/刪除/增長
>>> tu = (111,"william",(11,22),[(33,44)],True,33,44,) >>> v = tu[3][0][0] #根據索引取值 >>> print(v) 33 >>> v = tu[3] >>> print(v) [(33, 44)] >>> tu[3][0] = 789 #根據索引間接修改值 >>> print(tu) (111, 'william', (11, 22), [789], True, 33, 44) >>>
字典一種 key - value 的數據類型,使用就像咱們上學用的字典,經過筆畫、字母來查對應頁的詳細內容。
一、基本結構:
#字典 #dict dit = { "k1":"v1" #鍵值對 "k2":"v2" }
字典的特性:
● dict是無序的
● key必須是惟一的,因此天生去重
二、字典的value能夠是任何值
>>> info = { ... "k1": 18, ... "k2": True, ... "k3": [ ... 11, ... [], ... (), ... 22, ... 33,yy ... { ... 'kk1': 'vv1', ... 'kk2': 'vv2', ... 'kk3': (11,22), ... } ... ], ... "k4": (11,22,33,44) ... } >>> print(info) {'k1': 18, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44), 'k2': True} >>>
三、布爾值(1,0)、列表、字典不能做爲字典的key
>>> info ={ ... 1: 'asdf', ... "k1": 'asdf', ... True: "123", ... # [11,22]: 123 ... (11,22): 123, ... # {'k1':'v1'}: 123 ... ... } >>> print(info) {'k1': 'asdf', 1: '123', (11, 22): 123} >>> info ={ ... 1: 'asdf', ... "k1": 'asdf', ... True: "123", ... [11,22]: 123 #列表不能做爲字典的key,不然會報錯 ... # {'k1':'v1'}: 123 ... ... } Traceback (most recent call last): File "<stdin>", line 5, in <module> TypeError: unhashable type: 'list' >>> info ={ ... 1: 'asdf', ... "k1": 'asdf', ... True: "123", ... #[11,22]: 123 ... {'k1':'v1'}: 123 #字典不能做爲字典的key,不然會報錯 ... ... } Traceback (most recent call last): File "<stdin>", line 6, in <module> TypeError: unhashable type: 'dict' >>>
四、字典無序
>>> info = { ... "k1": 18, ... "k2": True, ... "k3": [ ... 11, ... [], ... (), ... 22, ... 33, ... { ... 'kk1': 'vv1', ... 'kk2': 'vv2', ... 'kk3': (11,22), ... } ... ], ... "k4": (11,22,33,44) ... } >>> print(info) {'k1': 18, 'k4': (11, 22, 33, 44), 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]} >>>
五、索引方式找到指點元素
>>> info = { ... "k1": 18, ... 2: True, ... "k3": [ ... 11, ... [], ... (), ... 22, ... 33, ... { ... 'kk1': 'vv1', ... 'kk2': 'vv2', ... 'kk3': (11,22), ... } ... ], ... "k4": (11,22,33,44) ... } 輸出結果: >>> v = info['k1'] >>> print(v) 18 >>> v = info[2] >>> print(v) True >>> v = info['k3'][5]['kk3'][0] >>> print(v) 11
六、字典支持del刪除
>>> info = { ... "k1": 18, ... 2: True, ... "k3": [ ... 11, ... [], ... (), ... 22, ... 33, ... { ... 'kk1': 'vv1', ... 'kk2': 'vv2', ... 'kk3': (11,22), ... } ... ], ... "k4": (11,22,33,44) ... } >>> del info['k1'] >>> del info['k3'][5]['kk1'] >>> print(info) {'k4': (11, 22, 33, 44), 2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}]}
七、for循環
>>> info = { ... "k1": 18, ... 2: True, ... "k3": [ ... 11, ... [], ... (), ... 22, ... 33, ... { ... 'kk1': 'vv1', ... 'kk2': 'vv2', ... 'kk3': (11,22), ... } ... ], ... "k4": (11,22,33,44) ... } >>> for item in info: ... print(item) ... k1 k4 2 k3 >>> for item in info.keys(): ... print(item) ... k1 k4 2 k3 >>> for item in info.values(): ... print(item) ... 18 (11, 22, 33, 44) True [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] >>> ##如下兩種方法等價於 >>> for item in info.keys(): ... print(item,info[item]) ... k1 18 k4 (11, 22, 33, 44) 2 True k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] >>> >>> for k,v in info.items(): #會把dict轉成list,數據量大時莫用 ... print(k,v) ... k1 18 k4 (11, 22, 33, 44) 2 True k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] >>>
補充關於布爾值:
八、根據序列,建立字典,並指定統一的值
>>> v = dict.fromkeys(["k1",123,"999"],123) #分別指定列表中元素做爲key,而123做爲value,建立新的字典 >>> print(v) {'999': 123, 'k1': 123, 123: 123} >>> v = dict.fromkeys(("k1",123,"999",),123) #分別指定元祖中元素做爲key,而123做爲value,建立新的字典 >>> print(v) {'999': 123, 'k1': 123, 123: 123} #生成新的字典 >>>
九、根據key獲取值,key不存在時,能夠指定默認值(None)
v= dic['k12121312'] print(v) v = dic.get('k1',11111) print(v)
十、刪除並獲取值
>>> v = dic.pop('k1',90) >>> print(dic,v) {'k2': 'v2'} v1 >>> dic = { ... "k1": 'v1', ... "k2": 'v2' ... } >>> v = dic.pop("k1") >>> print(v) v1 >>> print(dic) {'k2': 'v2'} >>> k,v = dic.popitem() >>> print(dic,k,v) {} k2 v2
十一、設置值
#已存在,不設置,獲取當前key對應的值
#不存在,設置,獲取當前key對應的值
>>> dic = { ... "k1": 'v1', ... "k2": 'v2' ... } >>> v = dic.setdefault('k1111','123') >>> print(dic,v) {'k1111': '123', 'k1': 'v1', 'k2': 'v2'} 123 >>>
十二、更新
>>> dic = { ... "k1":'v1', ... "k2":'v2' ... } >>> dic.update({'k1':'11dfe','k3':123}) >>> print(dic) {'k3': 123, 'k1': '11dfe', 'k2': 'v2'} >>> >>> dic.update(k1=236,k3=345,k5="asdf") >>> print(dic) {'k3': 345, 'k5': 'asdf', 'k1': 236, 'k2': 'v2'} >>>
# 1、數字 # int(..) # 2、字符串 # replace/find/join/strip/startswith/split/upper/lower/format # tempalte = "i am {name}, age : {age}" # # v = tempalte.format(name='william',age=22) # v = tempalte.format(**{"name": 'william1','age': 23}) # print(v) # 3、列表 # append、extend、insert # 索引、切片、循環 # 4、元組 # 忽略 # 索引、切片、循環 以及元素不能被修改 # 5、字典 # get/update/keys/values/items # for,索引 # dic = { # "k1": 'v1' # } # v = "k1" in dic # print(v) # v = "v1" in dic.values() # print(v) # 6、布爾值 # 0 1 # bool(...) # None "" () [] {} 0 ==> False
#定義: 知識點回顧 可變類型是不可hash類型(列表、字典) 不可變類型是可hash類型(數字、字符串、元祖) #定義集合: 集合:能夠包含多個元素,用逗號分割, 集合的元素遵循三個原則: 一、每一個元素必須是不可變類型(可hash,可做爲字典的key) 二、沒有重複的元素 三、無序 注意集合的目的是將不一樣的值存放到一塊兒,不一樣的集合間用來作關係運算,無需糾結於集合中單個值 #優先掌握的操做 #一、長度len #二、成員運算in和not in #三、 &交集 #四、 |並集 #五、 -差集 #六、 ^對稱差集 #七、 == #八、 父集: >,>= #九、 子集: <,<=
一、添加(add())
s = set(['william', 'zhurui', 'grace']) print(s) 運行結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'william', 'zhurui', 'grace'} s = {1,2,3,4,5,6} s.add('s') #添加字符串s s.add('3') #添加字符串3 s.add(3) #添加數字3,原來集合中有元素3,新的集合是去重後的結果 print(s) 輸出結果: {1, 2, 3, 4, 5, 6, '3', 's'}
二、添加多項(update())
s1 = {1,2} s2 = {1,2,3} s1.update(s2) print(s1) s1 = {1,2} s2 = {1,2,3} s1.update([1,2,3,4])
s1.add() #更新一個值時用到
s1.union(s2) #不更新 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {1, 2, 3, 4}
三、清空(clear())
1 s = {1,2,3,4,5,6} 2 s.clear() 3 print(s) 4 輸出結果: 5 C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py 6 set()
四、刪除(pop(),remove(),discard())
①pop() 隨機刪
1 s = ['william', 12, 13, 14, 16, 89] 2 s1 = set(s) 3 print(s1) 4 輸出結果: 5 C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py 6 {12, 13, 14, 16, 'william', 89} 7 s1.pop() 8 print(s1) 9 輸出結果爲: 10 C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py 11 {12, 13, 'william', 14, 16, 89} 12 {13, 'william', 14, 16, 89}
注:pop是隨機刪除集合中的某個元素;
②remove() 指定刪除
s = ['william', 12, 13, 14, 16, 89] s1 = set(s) print(s1) s1.remove('william') print(s1) 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {89, 12, 13, 14, 16, 'william'} {89, 12, 13, 14, 16} #跟上面集合對比,william元素被刪除
name.remove('zhurui') #刪除元素不存在會報錯
s = ['william', 12, 13, 14, 16, 89] s1 = set(s) s1.remove('zhurui') #zhurui這個元素不存在 print(s1) 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py Traceback (most recent call last): File "C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py", line 44, in <module> s1.remove('zhurui') KeyError: 'zhurui'
name.discard('zhurui') #刪除元素不存在不會報錯
s = ['william', 12, 13, 14, 16, 89] s1 = set(s) s1.discard('zhurui') #刪除一個沒有的元素,執行結果並無報錯 print(s1) 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'william', 12, 13, 14, 16, 89}
注:用remove刪除時,當元素不存在,會報錯;
③discard()
s = ['william', 12, 13, 14, 16, 89] s1 = set(s) s1.discard('zhurui') #刪除一個沒有的元素,執行結果並無報錯 print(s1) 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'william', 12, 13, 14, 16, 89}
注:用discard刪除不存在的元素時,不會出現報錯
五、長度(len())
name_1 = [1,2,3,4,7,8,7,10] name_1 = set(name_1) print(len(name_1)) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py 7
六、x in s
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) >>> 1 in name_1 True
name_1 = [1,2,3,4,7,8,7,10] name_1 = set(name_1) # print(len(name_1)) print(1 in name_1) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py True
七、x not in s
name_1 = [1,2,3,4,7,8,7,10] name_1 = set(name_1) # print(len(name_1)) print(13 not in name_1) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py True
一、交集(intersection())
python_l=['lcg','szw','zjw','lcg'] linux_l=['lcg','szw','sb'] p_s = set(python_l) l_s = set(linux_l) print(p_s, l_s) print(p_s.intersection(l_s)) #跟&方法方法同樣都是求交集 print(p_s&l_s) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'zjw', 'szw', 'lcg'} {'szw', 'lcg', 'sb'} {'szw', 'lcg'} {'szw', 'lcg'}
二、並集(union())
python_l=['lcg','szw','zjw','lcg'] linux_l=['lcg','szw','sb'] p_s = set(python_l) l_s = set(linux_l) print(p_s, l_s) print(p_s.union(l_s)) print(p_s|l_s) #並集符號形式表示 輸出結果爲: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'lcg', 'zjw', 'szw'} {'sb', 'lcg', 'szw'} {'lcg', 'sb', 'zjw', 'szw'} {'lcg', 'sb', 'zjw', 'szw'}
三、差集(difference())
python_l=['lcg','szw','zjw','lcg'] linux_l=['lcg','szw','sb'] p_s = set(python_l) l_s = set(linux_l) print('差集', p_s-l_s) print(p_s.difference(l_s)) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py 差集 {'zjw'} {'zjw'} print('差集', l_s-p_s) print(l_s.difference(p_s)) 輸出結果: 差集 {'sb'} {'sb'}
四、交叉補集(symmetric_difference()) #把兩個集合沒有交集的數值取出來
python_l=['lcg','szw','zjw','lcg'] linux_l=['lcg','szw','sb'] p_s = set(python_l) l_s = set(linux_l) print(p_s, l_s) print(p_s.symmetric_difference(l_s))
print(p_s^l_s) 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py {'lcg', 'zjw', 'szw'} {'lcg', 'szw', 'sb'} {'zjw', 'sb'} #將兩個集合對比,剔除相同部分,差別的部分組成新的集合就是咱們想要的結果
五、(difference_update())
python_l = ['lcg', 'szw', 'zjw', 'lcg'] linux_l = ['lcg', 'szw', 'sb'] p_s = set(python_l) l_s = set(linux_l) print('差集', p_s-l_s) p_s.difference_update(l_s) print(p_s)
六、isdisjoint() #判斷兩個集合是否有交集,沒有交集,則返回True
s1 = {1,2,3,} s2 = {3,4,5,6} print(s1.isdisjoint(s2)) #判斷兩者有無共有部分 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py False #兩個集合有交集,返回False
七、issubset() #判斷一個集合是不是另外一個集合的子集
s1 = {1,2} s2 = {1,2,3} print(s1.issubset(s2)) #判斷s1 是不是s2的子集,至關於s1 <= s2 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py True
八、issuperset() #判斷一個集合是不是另外一個集合的父集
s1 = {1,2,3} s2 = {1,2} print(s1.issuperset(s2))#s1是s2的父集,爲真則返回True 輸出結果: C:\Python35\python3.exe C:/Users/ZR/PycharmProjects/python全棧開發/day15/set_集合.py True