列表和元組

Liu_handsome_brother發表於2019-03-27

字元編碼:

ASCII       :     只編碼了英文和常用符
漢字        :      gbk   gb2313
unicode     :     將全球所有文字編寫到了一張表中,unicdoe一般存在於記憶體中,不會存在硬碟中

資料在硬碟或網路上進行儲存或傳輸時,必須以位元組碼的形式存在。將編碼編碼成位元組碼:
    utf-8
    gbk

常用命令
    - ord()     : 根據某一個字元檢視unicode編碼值    ord('中')
    - chr()     : 根據unicode編碼值檢視某一個字元    chr(20015)
    - encode()   :  將unicode編碼成位元組碼             '中國'.encode()      '中國'.encode('gbk')
    - decode()   :  將位元組解碼成unicode               b'\xe4\xb8\xad'.decode('utf-8')

ASCII

0   : 48
A   : 65
a   : 97
\b  \r \n \f  \t \v

列表 list

列表是一個有序的可變容器。
形式:
    L = []
    L = [1,3.14,'abc',[1,2]]
    L = list(可迭代物件)         L = list('abc123')

例: L = [1,3.14,'abc',[1,2]]
增
    L.append(item)          在最後增加一個元素   L.apppend(6)
    L.insert(索引,item)     在指定索引處插入一元素   L.insert(2,'666')
    L.extend(列表)           將兩個列表合併成一個     L.extend([1,2,3])
刪 
    L.pop(索引)                根據索引彈出元素,預設索引值為-1, L.pop()    L.pop(0)
    L.remove(元素值)          根據元素的值進行刪除元素,從左至右僅刪除一次
    L.clear()                  清空整個列表
    del(物件)                  python通用方法,可以刪除整個列表或某個元素   del(L)   del(L[2])
改
    L[索引] = 新值             根據索引進行修改    L[3] = 'test'
查
    因為列表是序列的一種,所以所有序列的方法全部適用
            索引、切片、加法、乘法、in 、not in 、 len() 、max()、min()
    L.count(值)                查尋某一個值在列表中出現的次數
    L.index(值)               查尋某一個值在列表中對應的索引
其它方法:
    L.reverse()               將列表取反,會直接修改元素本身,類似於  L = L[::-1]
    L.sort()                  排序,前提時列表中的元素型別一致
                              L1 = [10,2,100,5]
                              L1.sort()
    L.copy()                  深拷貝

深拷貝和淺拷貝
    淺拷貝指向同一記憶體空間,所以一個物件修改了,全部修改了。
        L1 = L
    深拷貝是在記憶體中新開闢了一個空間,這個空間初始值相同,所有的操作都是獨立的。
        L1 = L.copy()
        L2 = L[:]

元組 tuple

元組是一種有序的不可變容器,可以認為元組就是一個只讀的列表
形式:
    var = ()
    var = (1,)   var = 1,2,3        元組的小括號可以省略,如裡元組中只有一個元素,那麼這個元素後面必須 要有一個逗號
    var = (1,3.14,'abc',[1,2],('test1',),True)
    var = tuple(迭代物件)           可以將一個迭代物件變成元組    var = tuple('abc')  var = tuple([1,2,3])

元組的操作方法:
    例:var = (1,3.14,'abc',True)

    因為元組是序列的一種,所以所有序列的方法全部適用
            索引、切片、加法、乘法、in 、not in 、 len() 、max()、min()
    var.count(值)                查尋某一個值在元組中出現的次數
    var.index(值)               查尋某一個值在元組中對應的索引

練習

server1 = r'9000,20GB,3xx:1000,4xx:500,5xx:100'
server2 = r'32000,120GB,3xx:1500,4xx:1000,5xx:600'
求出兩個伺服器的總流量,及總訪問次數

參考:
    server1 = r'9000,20GB,3xx:1000,4xx:500,5xx:100'
    server2 = r'32000,120GB,3xx:1500,4xx:1000,5xx:600'

    count1 = int(server1.split(',')[0])
    count2 = int(server2.split(',')[0])
    print(count1 + count2)

    size1 = server1.split(',')[1]
    size1 = int(size1[:-2])
    size2 = server2.split(',')[1]
    size2 = int(size2[:-2])
    print('{}GB'.format(size1 +size2))

斐波那契數列(後一位永遠是前兩位數的和)
fib = [1,1]   要求使用列表輸出前6數
fib = [1,1,2,3,5,8,13,21,......]

參考:
       #!/usr/local/python3/bin/
#conding:utf-8
#author:liu shuai jie
''' 斐波那契數列(後一位永遠是前兩位數的和)
 fib = [1,1]   要求使用列表輸出前6數
fib = [1,1,2,3,5,8,13,21,......]'''
number = int(1)
fib = [1,1]
while number <= 4:
    tmp = fib[-1] + fib[-2]
    fib.append(tmp)
    number += 1
print(fib)

input 採集學生資訊(姓名,電話,成績),至少三個,使用列表,輸出如下形式
[ [‘stu1’,18801116666,80],[‘stu2’,1040926265@qq.com,70],[‘stu1’,18801116856,78s] ]
參考:

 #!/usr/local/python3/bin/
#conding:utf-8
#author:liu shuai jie
number = int(1)
stus = []
while number <= 3:
    name = input('please input your name: \n').strip()
    phone = input('{} please input your phone number:\n'.format(name))
    age = input('{} please input your age:\n'.format(name))
    tmp = [name,phone.strip(),age.strip()]
    stus.extend(tmp)
    number += 1
print(stus)

相關文章