1. 程式人生 > >python學習筆記:python基礎語法與列表list

python學習筆記:python基礎語法與列表list

1、while迴圈和for迴圈
    while 真值表達式1:
        語句塊1
    else:
        語句塊2
    執行流程:先判斷真值表達式,True進語句塊1,完了之後繼續判斷真值表達式1
          直到真值表達式為False,執行一遍else裡的內容,結束while語句
    注意迴圈變數的自增和自減即可
2、break語句
    終止上一層迴圈
3、for語句用於遍歷序列或者迭代物件的每一個元素
    可迭代物件:指能夠依次獲取資料的物件,包括字串str、列表list、元組tuple、字典dict、集合set、range等
    語法格式:
    for 變數列表 in 可迭代物件:
        語句塊1
    else:
        語句塊2
    解釋:可迭代物件的每一個元素物件依次賦給列表中的變數,賦值完畢後執行語句塊1
        所有元素都賦值過後,執行else;如果使用了break跳出迴圈,else語句不會繼續執行
4、range函式
    for i in range(5):    i是從0到4(包含4)
    for i in range(5,9):    i是從5到8(包含8)
    for i in range(1,9,2):    i的增量是2,所以i的值為:1 3 5 7
    for i in range(9,1,-2):    i的值依次為9,7,5,3

5、一個很好的練習題:
    用for迴圈生成一個字串"ABCD...XYZ",並列印。
    程式碼:
    i = str()
    for c in range(ord('A'),ord('Z')+1):
        i += str(chr(c))
    print("%s"%i)
6、練習題:輸入Unicode的begin值和end值,按表格形式列印這個區間內的Unicode的十進位制、十六進位制、對應字元
    str1 = input("please input Unicode1: ")
    str2 = input("please input Unicode2: ")
    begin = int(str1)
    end = int(str2)
    print("%s"%"10jinzhi".center(15),end = '|')
    print("%s"%"16jinzhi".center(15),end = '|')
    print("%s"%"char".center(15),end = '|\n')

    for i in range(begin,end+1):
        print("%s"%str(i).center(15),end = '|')
        print("%s"%hex(i).center(15),end = '|')
        print("%s"%str(chr(i)).center(15),end = '|\n')
    執行結果:
        please input Unicode1: 45
        please input Unicode2: 53
            10jinzhi   |    16jinzhi   |      char     |
                45      |      0x2d     |       -       |
                 46      |      0x2e     |       .       |
                 47      |      0x2f     |       /       |
                 48      |      0x30     |       0       |
                  49      |      0x31     |       1       |
                  50      |      0x32     |       2       |
                  51      |      0x33     |       3       |
                  52      |      0x34     |       4       |
                  53      |      0x35     |       5       |

7、continue語句
    和c語言一樣
8、列表list
    一個長度可變的容器,其資料型別可以不一致
    比如[1,3,4,[23,424],"qweqwe",1+2j]
    宣告一個列表  l = [10,2,3]
    建構函式list():
        list()    返回空列表
        list(interable,即可迭代物件,如str,range)    用所給interable產生一個list
        比如:list(range(10,1,-2)) = [10, 8, 6, 4, 2]
              list("list("abcdefg")) = ['a', 'b', 'c', 'd', 'e', 'f', 'g']            
        
9、列表的運算
    +:兩個list合併
    +=:兩個list合併
    *:相當於多個加法,只能乘int,不能乘list;乘以負數,得到空列表
    *=:同上
    規則和字串一樣
10、列表的比較
    < <= > >= == !=
    比較規則:從前向後比較每一個元素,完全相同則相等
        如果一個列表比另一個長,那麼短的那個列表比較時,空缺的部分值為-∞
        ["abc",1,2] > ["123",1,2]因為字串"abc">"123"
        但是["abc",1]>[1,2]執行時會出錯,因為無法比較
11、list的in和not in運算子
    判斷元素是否在list中
    例子:'a' in ['a',1,2,3] = True
        然而:'a' in [1,2,['a','b']] = False
12、list列表的索引與切片
    和字串一樣
    索引和c的陣列完全一樣
    切片的結果還是列表list
    列表的切片是可以賦值的:l[1:3] = [1,2],此時還是可以倒著賦值
    切出一個長度為0的“縫”,還可以給某個位置插入一些資料
13、del刪除列表元素
    del L[-1]刪除編號為-1即最後一個元素
    del L[0]刪除編號為0的元素,即第一個元素
    del L[::2]刪除切片出來的元素,這個語句將刪除L中0,2,4,6...這些元素
14、list列表相關的函式
    len(L)
    max(L)
    min(L)
    
    sum(L)    列表元素求和,必須是數值型列表
    any(L)    列表中有一個元素bool值為真則返回真
    all(L)    列表中所有元素都為真則為真
    
15、list列表常用方法(method)
    L.index(x[,begin[,end]])    找到第一個值為x的列表元素返回下標
                    begin為開始,end為結束,預設為list開頭和結尾,找不到產生錯誤
    L.insert(index,obj)    在index下標處插入obj,之後元素後移,負下標依然起作用
    L.count(x)    數列表中元素x的個數
    L.remove(x)     刪除列表中第一次出現該值的元素
    L.append()     向列表追加一個元素
    L.extend(List)    向列表插入另一個列表,和+=不同的是,該操作不會進行記憶體複製,只是在L基礎上追加
        注意:L.extend([1,2,3])會將1,2,3分別作為一個單獨元素加入到L後面,但是append([1,2,3])將[1,2,3]作為一個元素加入L之後
    L.clear()    清空列表,即L=[]
    對列表的賦值操作是引用賦值,兩個變數關聯的還是同一個記憶體區域,用L.copy()做一個拷貝
    L.sort(reverse = Flase)    排序,預設順序從小到大
    L.reverse()    列表反轉,和切片不同的是,不用記憶體複製
    L.pop([index])    刪除index下標處對應的元素,預設刪除最後一個,返回被pop物件的引用
16、深拷貝和淺拷貝
    淺拷貝指在拷貝時只拷貝物件的引用關係,不拷貝關聯的物件
    深拷貝指連同關聯的物件一起拷貝,用
        import copy
        copy.deepcopy(L1)進行深拷貝
    
17、列表和字串比較
    列表和字串都是可迭代物件、有序序列
    列表元素可以是任意元素,字串元素只能是字元
    字串相對來說的不可變物件,而序列則是可變物件
18、字串文字解析方法split()和join()
    str.split(sep=None,maxsplit=-1)    將字串以sep為界限分割成若干字串,以列表形式返回。如果未給定sep,則以空白符為界限
    str.join(iterable)    舉個例子:L=['aa','a','3']  "##".join(L) = 'aa##a##3'
    舉例一個應用:    
        path = ['C:','usr','WilliamCode']
        "\\".join(path) = 'C\\usr\\WilliamCode'   #其中\\是轉義字元,用於生成路徑