1. 程式人生 > >python學習筆記-基礎

python學習筆記-基礎


#=====================python筆記=====================
學習環境:python3.7 + JetBrains PyCharm 2018.2.6 x64
根據自身學習情況進行記錄

#=====================註釋=====================
# 註釋的寫法:
#單行註釋
'''
第一行註釋
第二行註釋
'''

#=====================變數=====================
#數字型別的變量表示
二進位制:0b0001;八進位制:0o0767;十六進位制0xFFFF

#=====================運算子=====================
    a = 9+3-2 # +,-跟正常算術運算子一模一樣
    a = 9 * 4 # 乘號用星號(*)代替
    a = 9/4 # 除號用斜槓(/)代替,得到的是2.25
    a = 9 % 4 # % 取餘運算
    a = 9 // 4 # // 表示取商運算,也叫地板除
    a = 9 ** 4 # ** 表示冪運算

#邏輯運算的短路
#邏輯表示式中,前一個表示式如果能運算出最終結果,則不在向下計算
  a = True or xxxxxxxxxxx

#=====================引數=====================
# 引數混合呼叫:定義的時候一般找普通引數,關鍵字引數,收集引數tuple,收集引數dict
    def func(a, b=1, *l, **d)

#收集引數的解包問題
    arg = ([1, 2, 3, 4],) # args的表示形式是字典內一個list型別的元素
#list、tuple需要使用"*"進行解包;dict 使用"**"進行解包

#=====================函式文件=====================

#在函式內部開始的第一行使用三引號字串定義符
# 檢視函式文件
    help(stu)
    stu.__doc__

#=====================變數作用域=====================
全域性(global): 在函式外部定義
區域性(local):在函式內部定義
    globals();locals()  #通過globals和locals顯示出區域性變數和全域性變數
    
#字串當成表示式來執行
    eval("print('')")函式:返回執行後的結果
    exec("print('')")函式:不返回結果

#=====================list=====================
    l = [a, b, c] 或 l = list() #list的建立
    del l, #list物件的刪除

#list分片:
#陣列預設增長值為1,最後一個數字的下標是-1
#list的值擷取:list[1:5];list[:5];list[1:];list[:];list[-5:-1];list[-1:-5:-1]
#列表遍歷:算數+巢狀+for+條件表示式
    c = [  10*m + n for m in a for n in b if m+n < 250]

#list相關的常用函式
    len(l), max(l), min(l),
    l("123") #轉化成list型別
    l.count("111") #查詢指定元素在列表中的數量
    l.append("111") #list的最後一位追加指定元素
    l.insert(3,111) #list的指定位置插入指定元素,大量消耗資源
    l.pop() #list刪除最後一位元素,返回最後一位元素
    l.remove("111") #list刪除指定的元素
    l.index("111") #指定元素在list中的索引位置,如果需要查詢的數字是多個,則返回第一個
    del l[1] #list刪除指定位置的元素
    l.reverse() #list的翻轉(同地址)
    l.clear() #list的清空
    l.extend(list2) #list的擴充套件(同地址),也可使用"+","*"操作(不同地址)
    list2 = list1.copy() #list的淺拷貝(不同地址的list)(淺拷貝:只拷貝一層地址),傳值(地址不同)

#=====================tuple=====================
#是一個不可更改的list。
    t = (1,) 或 t = 1 或 t = 1,2,3,4 #list的建立,注意:tuple中只有一個整數表示
    t = () #定義一個空的tuple
#tuple相關的常用函式
    tuple([1,2,3,4,5]) #轉化成tuple型別
#list具有的一些操作基本一致,比如索引,分片(區別:tuple切片可以超界),序列相加,相乘,成員資格操作等

#雙層元組的遍歷
    t = ((1,2,3), (2,3,4),(3,4,5))
    for k,m,n in t:
        pass

#=====================set=====================
#一堆確定的"無序"的"唯一"的資料
    s = set() 或 s = {a, b, c} #set的建立,"{}"中一定要有元素,否則set為dict型別
#集合內部資料元素具有唯一性,可以用來排除重複資料
#集合內的資料,str, int, float, tuple,冰凍集合等,即內部只能放置可雜湊資料
#len,min,max,copy與list用法相同
    s.add("111") #set追加指定元素
    s.clear() #set的清空
    s.remove("111") #remove:移除指定的元素,直接改變原有值,如果要刪除的值不存在,報錯。
    s.discard("111") #discard:移除集合中指定的值,跟remove一樣,如果要刪除的值不存,不報錯。
    s.pop() #隨機移除一個元素,返回這個元素
# 集合函式
# intersection: 交集
# difference:差集,也可以使用"-"操作
# union: 並集
# issubset: 檢查一個集合是否為另一個子集
# issuperset: 檢查一個集合是否為另一個超集
    s = frozenset() #冰凍集合是不可以進行任何修改的集合

#=====================dict=====================
#dict的建立
    d = dict()
    d = {}
    d = {1:"1", 2:"2", 3="3"}
    d = dict({1:"1", 2:"2", 3="3"})
    d = dict(a=1, b=2, c=3) 
    d = dict( [("one",1), ("two",2), ("three",3)])
#字典是序列型別,但是是無序序列,所以沒有分片和索引
#字典中的資料每個都有鍵值對組成,即kv對
#key: 必須是可雜湊的值,比如int,string,float,tuple, 不能是 list,set,dict 不行
#value: 任何值
    a = d["one"] #dict的訪問
    d["two"] = 2 #dict的修改
    del d["two"]    #dict元素的刪除
#dict在in,not in中檢測的是key值
---與list、tuple、set不同的特殊用法
    for k,v in dict.item()
#dict的生成
    d = {k:v for k,v in dist.item() if v % 2 == 0}
#dict的相關函式
    len(),max(),min(),dict()
    str(d) #返回字串
    d.items() #返回字典的鍵值對組成的元組格式,同理keys(),values()
    d.get() #根據指定鍵返回相應的值(沒有返回None),與dict["one"]區別。
# fromkeys: 使用指定的序列作為鍵,使用一個值作為字典的所有的鍵的值
# 注意fromkeys兩個引數的型別
# 注意fromkeys的呼叫主體
    l = ["eins", "zwei", "drei"]
    d = dict.fromkeys(l, "111")

#=====================書寫規範=====================
#定義及呼叫是的引數寫法:函式內"="前後不加空格,","後加空格
    def function(a=a, b=0, c="11"):
        pass
    function(a=a, b=0, c="11")
#定義變數的寫法:"="前後加空格
    a = "aa"
    b = 0

#=====================補充=====================
#python無"switch-case"語句

#range[1,5],list[1,6],包含左,不包含右
#randint是特例,他左右都包含

    a,b = b,a #python的變數交換
    type() #返回"()"內的型別
    id() #返回id號,以判斷引用地址
    
#思考:a = b之後,a和b的id號一樣,為什麼再b賦新值後,a和b的值不一樣?
#解答:傳址(複雜變數)與傳值的區別

#可雜湊資料與不可雜湊資料:
#可變型別的資料不可雜湊,如list,字典:同值不同址,不同值同址
#數值、字母、字串、數字、元組不可變:同值同址,不同值不同址