[筆記] python3 實用筆記

python3 實用筆記

*本篇資料來源為莫煩 python:
https://morvanzhou.github.io/
  • python 文件讀寫

    w 讀
    r 寫
    a 附加 (append)
    my_file = open('myfile.txt','w') my_file.write("XD") my_file.close
    file = open('myfile.txt','r') content = file.read() content_arr = file.readlines() // 以 array 方式逐行儲存 print(content)
    目前這樣容易會忘了關檔,這時候用 with 是個不錯的選擇
  • python tuple & list

    a_tuple = (1,2,3,4) another_tuple = 2,4,6,8,10 a_list = [1,2,3,4,5] a_list.sort(reverse=True) print(a_tuple) # (1, 2, 3, 4) print(another_tuple) # (2, 4, 6, 8, 10) print(a_list) # [5, 4, 3, 2, 1]
  • python dictionary

    dic = {'key1':1,'key2':2,'key3':3, 4:'haha'} dic2 = {'pear':{1:3, 3:'a'}, 'orange':'2017'} # 沒有順序 print(dic) # {'key3': 3, 'key2': 2, 'key1': 1, 4: 'haha'} print(dic['key1']) # 1 print(dic[4]) # haha print(dic2['pear'][3]) # a # 新增 dic['new'] = 99 # 刪除 del dic['key2'] print(dic) # {'key3': 3, 'key1': 1, 4: 'haha', 'new': 99}
  • python set

    利用 set (集合) 來找出所有不重複的元素
    #coding=utf-8 my_set = ['a','a','a','b','b','c','c','c','c','d','e','ee','e'] # 利用 set 將不重複的種類印出來 print(set(my_set)) # {'d', 'e', 'b', 'a', 'c', 'ee'} # 使用 set 把一個句子裡面的字元集合找出來 sentence = 'Today is Tuesday, said tao' print(set(sentence)) # {'d', 'T', 'i', 'y', 'e', 'u', ' ', 't', ',', 'a', 'o', 's'} # 新增與刪除 unique_char=set(my_set) # {'d', 'e', 'b', 'a', 'c', 'ee'} unique_char.add('x') unique_char.remove('a') print(unique_char) # {'e', 'b', 'c', 'x', 'd', 'ee'} # 交集與差集 set1 = set(my_set) set2 = set(sentence) # 交集:找出 set1 與 set2 都有的元素 print(set1.intersection(set2)) # {'d', 'e', 'a'} # 差集:找出 set1 裡面有 但是在 set2 裡面沒有的 print(set1.difference(set2)) # {'b', 'c', 'ee'}
  • python import module

    import time print(time.time()) # 1492059020.73 print(time.localtime()) # time.struct_time(tm_year=2017, tm_mon=4, tm_mday=13, tm_hour=12, tm_ # min=50, tm_sec=20, tm_wday=3, tm_yday=103, tm_isdst=0)
    from time import time, localtime print(time()) # 1492059020.73 print(localtime()) # time.struct_time(tm_year=2017, tm_mon=4, tm_mday=13, tm_hour=12, tm_ # min=50, tm_sec=20, tm_wday=3, tm_yday=103, tm_isdst=0)
    • import 自己的 module
      寫一個自己腳本 module1.py
      def method(data): print(data)
      在程式裡面 import 剛剛寫的 module 並呼叫 function
      main.py
      import module1 module1.method("Hi Hi ~")
      上面的 main.py 跟 module1.py 需要在同一個目錄下才 import 的到。
      如果想要在任何地方 import 我們自己寫的 module1 的話,就要把 module1.py 複製到目錄: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/
      相當於使用套件管理工具安裝套件的效果
  • python 例外處理

    try: file = open('ooxx','r') except Exception as e: print('no such file') else: file.write('XD') file.close()
  • 使用 pickle 存變數資料與運算結果

    • 存資料
    #coding=utf-8 import pickle # 注意:使用 pickle 的時候,檔名不可以命名成 pickle.py a = [1,3,5,7,9] d = {'cat':1000, 2:['1','a','XX',3], '3':{'k':'tao', 6:10}} s = 'my name' # 存資料 with open('my_file.pickle','wb') as file: pickle.dump(a, file) # 使用 dump 把 data 倒進去 file 裡面 pickle.dump(d, file) pickle.dump(s, file)
    • 讀取資料
    #coding=utf-8 import pickle # 注意:使用 pickle 的時候,檔名不可以命名成 pickle.py # 拿資料 with open('my_file.pickle','r') as file1: a = pickle.load(file1) # 逐行拿資料,包括可以拿到 data type d = pickle.load(file1) s = pickle.load(file1) print(a) print(d) print(s)
  • 深複製(deep copy)與淺複製(shallow copy)

    • assign 與 copy 的差別
    #coding=utf-8 import copy a = [1,2,3] b = a # 等號代表 assign print(id(a)) # 4432640984 記憶體位址 print(id(b)) # 4432640984 記憶體位址 print(id(a)==id(b)) # True b[0] = 11 print(a) # [11, 2, 3] a[1] = 22 print(b) # [11, 22, 3] c = copy.copy(a) # 淺複製 print(id(a)==id(c)) # False c[1] = 22222 print(a) # [11, 22, 3] print(c) # [11, 22222, 3]
    • assign, copy 與 deepcopy 的差別
    #coding=utf-8 import copy a = [1,2,[3,4]] b = a # [1,2,[3,4]] print("*** assign ***") # 指到同一塊記憶體空間 print(id(a)==id(b)) # True print(id(a[2])==id(b[2])) # True d = copy.copy(a) # [1,2,[3,4]] print("*** shallow copy ***" ) # 淺複製 只在淺部分開一塊新的空間 print(id(a)==id(d)) # False print(id(a[2])==id(d[2])) # True # 深的部分仍然是使用同一塊記憶體 e = copy.deepcopy(a) # [1,2,[3,4]] print("*** deep copy ***" ) # 深複製 完全開另一塊全新的空間 print(id(a)==id(e)) # False print(id(a[2])==id(e[2])) # False # 改變值的實驗 demo a[0] = 11 # [1, 2, [3, 4]] -> [11, 2, [3, 4]] print(b) # [11, 2, [3, 4]] 跟著改變 print(d) # [1, 2, [3, 4]] 不受影響 print(e) # [1, 2, [3, 4]] 不受影響 a[2][0] = 333 # [11, 2, [3, 4]] -> [11, 2, [333, 4]] print(b) # [11, 2, [333, 4]] 跟著改變 print(d) # [1, 2, [333, 4]] 跟著改變(深層的部分) print(e) # [1, 2, [3, 4]] 不受影響

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking