1)列表:html
列表是咱們最之後最經常使用的數據類型之一,經過列表能夠對數據實現最方便的存儲、修改等操做python
經過下標訪問列表中的元素,下標從到右以0開始計數linux
1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 2 >>> names[1:4] #取下標1至下標4之間的數字,包括1,不包括4 3 ['Tenglan', 'Eric', 'Rain'] 4 >>> names[1:-1] #取下標1至-1的值,不包括-1 5 ['Tenglan', 'Eric', 'Rain', 'Tom'] 6 >>> names[0:3] 7 ['Alex', 'Tenglan', 'Eric'] 8 >>> names[:3] #若是是從頭開始取,0能夠忽略,跟上句效果同樣 9 ['Alex', 'Tenglan', 'Eric'] 10 >>> names[3:] #若是想取最後一個,必須不能寫-1,只能這麼寫 11 ['Rain', 'Tom', 'Amy'] 12 >>> names[3:-1] #這樣-1就不會被包含了 13 ['Rain', 'Tom'] 14 >>> names[0::2] #後面的2是表明,每隔一個元素,就取一個 15 ['Alex', 'Eric', 'Tom'] 16 >>> names[::2] #和上句效果同樣 17 ['Alex', 'Eric', 'Tom']
1 >>> names 2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy'] 3 >>> names.append("我是新來的") 4 >>> names 5 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新來的']
1 >>> names 2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新來的'] 3 >>> names.insert(2,"強行從Eric前面插入") 4 >>> names 5 ['Alex', 'Tenglan', '強行從Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新來的'] 6 7 >>> names.insert(5,"從eric後面插入試試新姿式") 8 >>> names 9 ['Alex', 'Tenglan', '強行從Eric前面插入', 'Eric', 'Rain', '從eric後面插入試試新姿式', 'Tom', 'Amy', '我是新來的']
1 >>> names 2 ['Alex', 'Tenglan', '強行從Eric前面插入', 'Eric', 'Rain', '從eric後面插入試試新姿式', 'Tom', 'Amy', '我是新來的'] 3 >>> names[2] = "該換人了" 4 >>> names 5 ['Alex', 'Tenglan', '該換人了', 'Eric', 'Rain', '從eric後面插入試試新姿式', 'Tom', 'Amy', '我是新來的']
1 >>> del names[2] 2 >>> names 3 ['Alex', 'Tenglan', 'Eric', 'Rain', '從eric後面插入試試新姿式', 'Tom', 'Amy', '我是新來的'] 4 >>> del names[4] 5 >>> names 6 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新來的'] 7 >>> 8 >>> names.remove("Eric") #刪除指定元素 9 >>> names 10 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新來的'] 11 >>> names.pop() #刪除列表最後一個值 12 '我是新來的' 13 >>> names 14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
1 >>> names 2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy'] 3 >>> b = [1,2,3] 4 >>> names.extend(b) 5 >>> names 6 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
1 >>> names 2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3] 3 4 >>> name_copy = names.copy() 5 >>> name_copy 6 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
1 >>> names 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3] 3 >>> names.count("Amy") 4 2
1 >>> names 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3] 3 >>> names.sort() #排序 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: unorderable types: int() < str() #3.0裏不一樣數據類型不能放在一塊兒排序了,擦 7 >>> names[-3] = '1' 8 >>> names[-2] = '2' 9 >>> names[-1] = '3' 10 >>> names 11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3'] 12 >>> names.sort() 13 >>> names 14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
1 >>> names.reverse() #反轉 2 >>> names 3 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
1 >>> names 2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1'] 3 >>> names.index("Amy") 4 2 #只返回找到的第一個下標
2)元組:git
元組其實跟列表差很少,也是存一組數,只不是它一旦建立,便不能再修改,因此又叫只讀列表windows
定義:api
1 names = ("alex","jack","eric")
元組只有2個方法,一個是count,一個是index數組
3)字符串(不可修改)操做:服務器
1 name.capitalize() 首字母大寫 2 name.casefold() 大寫所有變小寫 3 name.center(50,"-") 輸出 '---------------------Alex Li----------------------' 4 name.count('lex') 統計 lex出現次數 5 name.encode() 將字符串編碼成bytes格式 6 name.endswith("Li") 判斷字符串是否以 Li結尾 7 "Alex\tLi".expandtabs(10) 輸出'Alex Li', 將\t轉換成多長的空格 8 name.find('A') 查找A,找到返回其索引, 找不到返回-1 9 10 format : 11 >>> msg = "my name is {}, and age is {}" 12 >>> msg.format("alex",22) 13 'my name is alex, and age is 22' 14 >>> msg = "my name is {1}, and age is {0}" 15 >>> msg.format("alex",22) 16 'my name is 22, and age is alex' 17 >>> msg = "my name is {name}, and age is {age}" 18 >>> msg.format(age=22,name="ale") 19 'my name is ale, and age is 22' 20 format_map 21 >>> msg.format_map({'name':'alex','age':22}) 22 'my name is alex, and age is 22' 23 24 25 msg.index('a') 返回a所在字符串的索引 26 '9aA'.isalnum() True 27 28 '9'.isdigit() 是否整數 29 name.isnumeric 30 name.isprintable 31 name.isspace 32 name.istitle 33 name.isupper 34 "|".join(['alex','jack','rain']) 35 'alex|jack|rain' 36 37 38 maketrans 39 >>> intab = "aeiou" #This is the string having actual characters. 40 >>> outtab = "12345" #This is the string having corresponding mapping character 41 >>> trantab = str.maketrans(intab, outtab) 42 >>> 43 >>> str = "this is string example....wow!!!" 44 >>> str.translate(trantab) 45 'th3s 3s str3ng 2x1mpl2....w4w!!!' 46 47 msg.partition('is') 輸出 ('my name ', 'is', ' {name}, and age is {age}') 48 49 >>> "alex li, chinese name is lijie".replace("li","LI",1) 50 'alex LI, chinese name is lijie' 51 52 msg.swapcase 大小寫互換 53 54 55 >>> msg.zfill(40) 56 '00000my name is {name}, and age is {age}' 57 58 59 60 >>> n4.ljust(40,"-") 61 'Hello 2orld-----------------------------' 62 >>> n4.rjust(40,"-") 63 '-----------------------------Hello 2orld' 64 65 66 >>> b="ddefdsdff_哈哈" 67 >>> b.isidentifier() #檢測一段字符串能否被看成標誌符,便是否符合變量命名規則 68 True
4)字典:app
字典一種key - value 的數據類型,使用就像咱們上學用的字典,經過筆劃、字母來查對應頁的詳細內容。less
1 info = { 2 'stu1101': "TengLan Wu", 3 'stu1102': "LongZe Luola", 4 'stu1103': "XiaoZe Maliya", 5 }
字典的特性:
1 >>> info["stu1104"] = "蒼井空" 2 >>> info 3 {'stu1102': 'LongZe Luola', 'stu1104': '蒼井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu'}
1 >>> info['stu1101'] = "武藤蘭" 2 >>> info 3 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤蘭'}
1 >>> info 2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤蘭'} 3 >>> info.pop("stu1101") #標準刪除姿式 4 '武藤蘭' 5 >>> info 6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} 7 >>> del info['stu1103'] #換個姿式刪除 8 >>> info 9 {'stu1102': 'LongZe Luola'} 10 >>> 11 >>> 12 >>> 13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} 14 >>> info 15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #隨機刪除 16 >>> info.popitem() 17 ('stu1102', 'LongZe Luola') 18 >>> info 19 {'stu1103': 'XiaoZe Maliya'}
1 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} 2 >>> 3 >>> "stu1102" in info #標準用法 4 True 5 >>> info.get("stu1102") #獲取 6 'LongZe Luola' 7 >>> info["stu1102"] #同上,可是看下面 8 'LongZe Luola' 9 >>> info["stu1105"] #若是一個key不存在,就報錯,get不會,不存在只返回None 10 Traceback (most recent call last): 11 File "<stdin>", line 1, in <module> 12 KeyError: 'stu1105'
1 av_catalog = { 2 "歐美":{ 3 "www.youporn.com": ["不少免費的,世界最大的","質量通常"], 4 "www.pornhub.com": ["不少免費的,也很大","質量比yourporn高點"], 5 "letmedothistoyou.com": ["可能是自拍,高質量圖片不少","資源很少,更新慢"], 6 "x-art.com":["質量很高,真的很高","所有收費,屌比請繞過"] 7 }, 8 "日韓":{ 9 "tokyo-hot":["質量怎樣不清楚,我的已經不喜歡日韓範了","據說是收費的"] 10 }, 11 "大陸":{ 12 "1024":["所有免費,真好,好人一輩子平安","服務器在國外,慢"] 13 } 14 } 15 16 av_catalog["大陸"]["1024"][1] += ",能夠用爬蟲爬下來" 17 print(av_catalog["大陸"]["1024"]) 18 #ouput 19 ['所有免費,真好,好人一輩子平安', '服務器在國外,慢,能夠用爬蟲爬下來']
1 #方法1 2 for key in info: 3 print(key,info[key]) 4 5 #方法2 6 for k,v in info.items(): #會先把dict轉成list,數據裏大時莫用 7 print(k,v)
1 #values 獲取字典的值 2 >>> info.values() 3 dict_values(['LongZe Luola', 'XiaoZe Maliya']) 4 5 #keys 獲取字典的鍵 6 >>> info.keys() 7 dict_keys(['stu1102', 'stu1103']) 8 9 10 #setdefault 若是鍵不存在於字典中,將會添加鍵並將值設爲默認值 11 >>> info.setdefault("stu1106","Alex") 12 'Alex' 13 >>> info 14 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 15 >>> info.setdefault("stu1102","龍澤蘿拉") 16 'LongZe Luola' 17 >>> info 18 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 19 20 21 #update 更新 22 >>> info 23 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 24 >>> b = {1:2,3:4, "stu1102":"龍澤蘿拉"} 25 >>> info.update(b) 26 >>> info 27 {'stu1102': '龍澤蘿拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 28 29 #items 以列表返回可遍歷的(鍵, 值) 元組數組 30 info.items() 31 dict_items([('stu1102', '龍澤蘿拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) 32 33 34 #經過一個列表生成默認dict,有個沒辦法解釋的坑,少用吧這個 35 >>> dict.fromkeys([1,2,3],'testd') 36 {1: 'testd', 2: 'testd', 3: 'testd'}
5)集合:
集合是一個無序的,不重複的數據組合,主要做用以下:
1 s = set([3,5,9,10]) #建立一個數值集合 2 3 t = set("Hello") #建立一個惟一字符的集合 4 5 6 a = t | s # t 和 s的並集 7 8 b = t & s # t 和 s的交集 9 10 c = t – s # 求差集(項在t中,但不在s中) 11 12 d = t ^ s # 對稱差集(項在t或s中,但不會同時出如今兩者中) 13 14 15 16 基本操做: 17 18 t.add('x') # 添加一項 19 20 s.update([10,37,42]) # 在s中添加多項 21 22 23 24 使用remove()能夠刪除一項: 25 26 t.remove('H') 27 28 29 len(s) 30 set 的長度 31 32 x in s 33 測試 x 是不是 s 的成員 34 35 x not in s 36 測試 x 是否不是 s 的成員 37 38 s.issubset(t) 39 s <= t 40 測試是否 s 中的每個元素都在 t 中 41 42 s.issuperset(t) 43 s >= t 44 測試是否 t 中的每個元素都在 s 中 45 46 s.union(t) 47 s | t 48 返回一個新的 set 包含 s 和 t 中的每個元素 49 50 s.intersection(t) 51 s & t 52 返回一個新的 set 包含 s 和 t 中的公共元素 53 54 s.difference(t) 55 s - t 56 返回一個新的 set 包含 s 中有可是 t 中沒有的元素 57 58 s.symmetric_difference(t) 59 s ^ t 60 返回一個新的 set 包含 s 和 t 中不重複的元素 61 62 s.copy() 63 返回 set 「s」的一個淺複製
6)文件操做:
對文件操做流程
1 f = open('lyrics') #打開文件 2 first_line = f.readline() 3 print('first line:',first_line) #讀一行 4 print('我是分隔線'.center(50,'-')) 5 data = f.read()# 讀取剩下的全部內容,文件大時不要用 6 print(data) #打印文件 7 8 f.close() #關閉文件
打開文件的模式有:
"+" 表示能夠同時讀寫某個文件
"U"表示在讀取時,能夠將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)
1 def close(self): # real signature unknown; restored from __doc__ 2 """ 3 Close the file. 4 5 A closed file cannot be used for further I/O operations. close() may be 6 called more than once without error. 7 """ 8 pass 9 10 def fileno(self, *args, **kwargs): # real signature unknown 11 """ Return the underlying file descriptor (an integer). """ 12 pass 13 14 def isatty(self, *args, **kwargs): # real signature unknown 15 """ True if the file is connected to a TTY device. """ 16 pass 17 18 def read(self, size=-1): # known case of _io.FileIO.read 19 """ 20 注意,不必定能全讀回來 21 Read at most size bytes, returned as bytes. 22 23 Only makes one system call, so less data may be returned than requested. 24 In non-blocking mode, returns None if no data is available. 25 Return an empty bytes object at EOF. 26 """ 27 return "" 28 29 def readable(self, *args, **kwargs): # real signature unknown 30 """ True if file was opened in a read mode. """ 31 pass 32 33 def readall(self, *args, **kwargs): # real signature unknown 34 """ 35 Read all data from the file, returned as bytes. 36 37 In non-blocking mode, returns as much as is immediately available, 38 or None if no data is available. Return an empty bytes object at EOF. 39 """ 40 pass 41 42 def readinto(self): # real signature unknown; restored from __doc__ 43 """ Same as RawIOBase.readinto(). """ 44 pass #不要用,沒人知道它是幹嗎用的 45 46 def seek(self, *args, **kwargs): # real signature unknown 47 """ 48 Move to new file position and return the file position. 49 50 Argument offset is a byte count. Optional argument whence defaults to 51 SEEK_SET or 0 (offset from start of file, offset should be >= 0); other values 52 are SEEK_CUR or 1 (move relative to current position, positive or negative), 53 and SEEK_END or 2 (move relative to end of file, usually negative, although 54 many platforms allow seeking beyond the end of a file). 55 56 Note that not all file objects are seekable. 57 """ 58 pass 59 60 def seekable(self, *args, **kwargs): # real signature unknown 61 """ True if file supports random-access. """ 62 pass 63 64 def tell(self, *args, **kwargs): # real signature unknown 65 """ 66 Current file position. 67 68 Can raise OSError for non seekable files. 69 """ 70 pass 71 72 def truncate(self, *args, **kwargs): # real signature unknown 73 """ 74 Truncate the file to at most size bytes and return the truncated size. 75 76 Size defaults to the current file position, as returned by tell(). 77 The current file position is changed to the value of size. 78 """ 79 pass 80 81 def writable(self, *args, **kwargs): # real signature unknown 82 """ True if file was opened in a write mode. """ 83 pass 84 85 def write(self, *args, **kwargs): # real signature unknown 86 """ 87 Write bytes b to file, return number written. 88 89 Only makes one system call, so not all of the data may be written. 90 The number of bytes actually written is returned. In non-blocking mode, 91 returns None if the write would block. 92 """ 93 pass
with語句
1 with open('log','r') as f: 2 3 ...
如此方式,當with代碼塊執行完畢時,內部會自動關閉並釋放文件資源
Python 2.7 後,with又支持同時對多個文件的上下文進行管理,即:
1 with open('log1') as obj1, open('log2') as obj2: 2 pass
7)字符編碼與轉碼:
1.在python2默認編碼是ASCII, python3裏默認是unicode
2.unicode 分爲 utf-32(佔4個字節),utf-16(佔兩個字節),utf-8(佔1-4個字節), so utf-16就是如今最經常使用的unicode版本, 不過在文件裏存的仍是utf-8,由於utf8省空間
3.在py3中encode,在轉碼的同時還會把string 變成bytes類型,decode在解碼的同時還會把bytes變回string
1 #-*-coding:utf-8-*- 2 __author__ = 'Alex Li' 3 4 import sys 5 print(sys.getdefaultencoding()) 6 7 8 msg = "我愛北京天安門" 9 msg_gb2312 = msg.decode("utf-8").encode("gb2312") 10 gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk") 11 12 print(msg) 13 print(msg_gb2312) 14 print(gb2312_to_gbk) 15 16 in python2
1 #-*-coding:gb2312 -*- #這個也能夠去掉 2 __author__ = 'Alex Li' 3 4 import sys 5 print(sys.getdefaultencoding()) 6 7 8 msg = "我愛北京天安門" 9 #msg_gb2312 = msg.decode("utf-8").encode("gb2312") 10 msg_gb2312 = msg.encode("gb2312") #默認就是unicode,不用再decode,喜大普奔 11 gb2312_to_unicode = msg_gb2312.decode("gb2312") 12 gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8") 13 14 print(msg) 15 print(msg_gb2312) 16 print(gb2312_to_unicode) 17 print(gb2312_to_utf8) 18 19 in python3
「編碼與解碼」詳細文章:
http://www.cnblogs.com/yuanchenqi/articles/5956943.html
http://www.diveintopython3.net/strings.html
+++++++++++++++++++++++++++++++++++++++++++++++++++
以上內容參考:http://www.cnblogs.com/alex3714/articles/5717620.html
若有侵權,請聯繫刪除!