python學習之路(基礎篇)——列表,字典,集合
阿新 • • 發佈:2018-06-22
cef mes 所有 聽說 基本 變量 .so tdi 作用
一、列表,元組操作
定義列表
names = [‘Alex‘,"Tenglan",‘Eric‘]
查看
>>> names[0] ‘Alex‘ >>> names[2] ‘Eric‘ >>> names[-1] ‘Eric‘ >>> names[-2] #還可以倒著取 ‘Tenglan‘
切片
>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] >>> names[1:4] #取下標1至下標4之間的數字,包括1,不包括4View Code[‘Tenglan‘, ‘Eric‘, ‘Rain‘] >>> names[1:-1] #取下標1至-1的值,不包括-1 [‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘] >>> names[0:3] [‘Alex‘, ‘Tenglan‘, ‘Eric‘] >>> names[:3] #如果是從頭開始取,0可以忽略,跟上句效果一樣 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] >>> names[3:] #如果想取最後一個,必須不能寫-1,只能這麽寫 [‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names[3:-1] #這樣-1就不會被包含了 [‘Rain‘, ‘Tom‘] >>> names[0::2] #後面的2是代表,每隔一個元素,就取一個 [‘Alex‘, ‘Eric‘, ‘Tom‘] >>> names[::2] #和上句效果一樣 [‘Alex‘, ‘Eric‘, ‘Tom‘]
追加
>>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> names.append("我是新來的View Code") >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘]
插入
>>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> names.insert(2,"強行從Eric前面插入") >>> names [‘Alex‘, ‘Tenglan‘, ‘強行從Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> names.insert(5,"從eric後面插入試試新姿勢") >>> names [‘Alex‘, ‘Tenglan‘, ‘強行從Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘從eric後面插入試試新姿勢‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘]View Code
修改
>>> names [‘Alex‘, ‘Tenglan‘, ‘強行從Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘從eric後面插入試試新姿勢‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> names[2] = "該換人了" >>> names [‘Alex‘, ‘Tenglan‘, ‘該換人了‘, ‘Eric‘, ‘Rain‘, ‘從eric後面插入試試新姿勢‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘]View Code
刪除
>>> del names[2] >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘從eric後面插入試試新姿勢‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> del names[4] >>> names [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> >>> names.remove("Eric") #刪除指定元素 >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新來的‘] >>> names.pop() #刪除列表最後一個值 ‘我是新來的‘ >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]View Code
擴展
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] >>> b = [1,2,3] >>> names.extend(b) >>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]View Code
拷貝
>>> names [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> name_copy = names.copy() >>> name_copy [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]View Code
拷貝分為淺copy和深copy 需要import調用
如列表包含列表情況
淺copy拷貝淺層深層的列表是拷貝地址name2=copy.copy(names)
深 copy則是完整拷貝 name2=copy.deepcopy(names)
淺copy可以用來創建聯合賬戶
統計
>>> names [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.count("Amy") 2View Code
排序&翻轉
>>> names [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] >>> names.sort() #排序 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() #3.0裏不同數據類型不能放在一起排序了,擦 >>> names[-3] = ‘1‘ >>> names[-2] = ‘2‘ >>> names[-1] = ‘3‘ >>> names [‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘, ‘1‘, ‘2‘, ‘3‘] >>> names.sort() >>> names [‘1‘, ‘2‘, ‘3‘, ‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘] >>> names.reverse() #反轉 >>> names [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘]View Code
獲取下標
>>> names [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘] >>> names.index("Amy") 2 #只返回找到的第一個下標View Code
元組
元組其實跟列表差不多,也是存一組數,只不是它一旦創建,便不能再修改,所以又叫只讀列表
names
=
(
"alex"
,
"jack"
,
"eric"
)
它只有2個方法,一個是count,一個是index,完畢。
二、字符串操作
三、字典操作
info = { ‘stu1101‘: "TengLan Wu", ‘stu1102‘: "LongZe Luola", ‘stu1103‘: "XiaoZe Maliya", }
字典的特性:
- dict是無序的
- key必須是唯一的,so 天生去重
增加
>>> info["stu1104"] = "蒼井空" >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1104‘: ‘蒼井空‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘TengLan Wu‘}View Code
修改
>>> info[‘stu1101‘] = "武藤蘭" >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘武藤蘭‘}View Code
刪除
>>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘武藤蘭‘} >>> info.pop("stu1101") #標準刪除姿勢 ‘武藤蘭‘ >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> del info[‘stu1103‘] #換個姿勢刪除 >>> info {‘stu1102‘: ‘LongZe Luola‘} >>> >>> >>> >>> info = {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} #隨機刪除 >>> info.popitem() (‘stu1102‘, ‘LongZe Luola‘) >>> info {‘stu1103‘: ‘XiaoZe Maliya‘}View Code
查找
>>> info = {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘} >>> >>> "stu1102" in info #標準用法 True >>> info.get("stu1102") #獲取 ‘LongZe Luola‘ >>> info["stu1102"] #同上,但是看下面 ‘LongZe Luola‘ >>> info["stu1105"] #如果一個key不存在,就報錯,get不會,不存在只返回None Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ‘stu1105‘View Code
多級字典嵌套與操作
av_catalog = { "歐美":{ "www.youporn.com": ["很多免費的,世界最大的","質量一般"], "www.pornhub.com": ["很多免費的,也很大","質量比yourporn高點"], "letmedothistoyou.com": ["多是自拍,高質量圖片很多","資源不多,更新慢"], "x-art.com":["質量很高,真的很高","全部收費,屌比請繞過"] }, "日韓":{ "tokyo-hot":["質量怎樣不清楚,個人已經不喜歡日韓範了","聽說是收費的"] }, "大陸":{ "1024":["全部免費,真好,好人一生平安","服務器在國外,慢"] } } av_catalog["大陸"]["1024"][1] += ",可以用爬蟲爬下來" print(av_catalog["大陸"]["1024"]) #ouput [‘全部免費,真好,好人一生平安‘, ‘服務器在國外,慢,可以用爬蟲爬下來‘]View Code
其他操作
#values >>> info.values() dict_values([‘LongZe Luola‘, ‘XiaoZe Maliya‘]) #keys >>> info.keys() dict_keys([‘stu1102‘, ‘stu1103‘]) #setdefault >>> info.setdefault("stu1106","Alex") ‘Alex‘ >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘} >>> info.setdefault("stu1102","龍澤蘿拉") ‘LongZe Luola‘ >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘} #update >>> info {‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘} >>> b = {1:2,3:4, "stu1102":"龍澤蘿拉"} >>> info.update(b) >>> info {‘stu1102‘: ‘龍澤蘿拉‘, 1: 2, 3: 4, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘} #items info.items() dict_items([(‘stu1102‘, ‘龍澤蘿拉‘), (1, 2), (3, 4), (‘stu1103‘, ‘XiaoZe Maliya‘), (‘stu1106‘, ‘Alex‘)]) #通過一個列表生成默認dict,有個沒辦法解釋的坑,少用吧這個 >>> dict.fromkeys([1,2,3],‘testd‘) {1: ‘testd‘, 2: ‘testd‘, 3: ‘testd‘}View Code
字典循環
#方法1 for key in info: print(key,info[key]) #方法2 for k,v in info.items(): #會先把dict轉成list,數據裏大時莫用 print(k,v)
四、集合操作
集合是一個無序的,不重復的數據組合,它的主要作用如下:
- 去重,把一個列表變成集合,就自動去重了
- 關系測試,測試兩組數據之前的交集、差集、並集等關系
常用操作
s = set([3,5,9,10]) #創建一個數值集合 t = set("Hello") #創建一個唯一字符的集合 a = t | s # t 和 s的並集 b = t & s # t 和 s的交集 c = t – s # 求差集(項在t中,但不在s中) d = t ^ s # 對稱差集(項在t或s中,但不會同時出現在二者中) 基本操作: t.add(‘x‘) # 添加一項 s.update([10,37,42]) # 在s中添加多項 使用remove()可以刪除一項: t.remove(‘H‘) len(s) set 的長度 x in s 測試 x 是否是 s 的成員 x not in s 測試 x 是否不是 s 的成員 s.issubset(t) s <= t 測試是否 s 中的每一個元素都在 t 中 s.issuperset(t) s >= t 測試是否 t 中的每一個元素都在 s 中 s.union(t) s | t 返回一個新的 set 包含 s 和 t 中的每一個元素 s.intersection(t) s & t 返回一個新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一個新的 set 包含 s 中有但是 t 中沒有的元素 s.symmetric_difference(t) s ^ t 返回一個新的 set 包含 s 和 t 中不重復的元素 s.copy() 返回 set “s”的一個淺復制View Code
五、文件操作
對文件操作流程
- 打開文件,得到文件句柄並賦值給一個變量
- 通過句柄對文件進行操作
- 關閉文件
基本操作
f = open(‘lyrics‘) #打開文件 first_line = f.readline() print(‘first line:‘,first_line) #讀一行 print(‘我是分隔線‘.center(50,‘-‘)) data = f.read()# 讀取剩下的所有內容,文件大時不要用 print(data) #打印文件 f.close() #關閉文件
這種操作只能讀小文件
讀文件前五行
for i in range(5) print(f.readline())
讀第五到第十
加if判斷
打開文件的模式有:
- r,只讀模式(默認)。
- w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;】
- a,追加模式。【可讀; 不存在則創建;存在則只追加內容;】
"+" 表示可以同時讀寫某個文件
- r+,可讀寫文件。【可讀;可寫;可追加】
- w+,寫讀
- a+,同a
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)
- rb
- wb
- ab
六、字符編碼與轉碼
python學習之路(基礎篇)——列表,字典,集合