Python學習---Python下列表的學習
列表[list]用中括號[]表示,處理一組有序項目的數據結構,列表的類型是可變的數據類型,類型是list
列表是可變/線程不安全的
# type(a) = list 利用type判斷元素離線
# 切片是左閉右開[m,n)的
# 取得方向由第三個參數的正負決定,不變的還是原來列表的下標
# -1代表最後一個元素
# ::代表到最後
#列表時可變的
#可以利用id查看列表在內存中的存儲位置
列表的創建+查詢
列表的查:切片,index, count
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] # print(id(name)) # 切片是左閉右開的形式,左右只是取的方向而已,不變的還是列表下標 # 打印所有元素 #print("打印所有元素:", name) print("打印所有元素:", name[0:name.__len__()]) print("打印所有元素(默認到最後):", name[0:]) # 打印第一個 print("打印第一個: ", name[0]) # 取出後面2個 print("取出後面2個: ", name[3:5]) # 取出world後面的所有元素,默認取到最後一個 print("取出world後面的所有元素: ", name[1:]) # -1代表最後一個元素 print("-1代表最後一個元素: ", name[-1]) # 去除最後一個元素 print("去除最後一個元素:", name[0:-1]) # 雖然超出了最大範圍,但是默認是取到最後一個元素 print("超出了最大範圍,但默認取到最後一個元素:", name[1:10]) # 間隔一個取一個元素(默認間隔是1,就是每一個元素都取到) print("間隔一個取一個元素(默認間隔是1,就是每一個元素都取到):", name[0::2]) # 從右向左取值,取出全部元素 print("從右向左取值name[-1::-1],取出全部元素:", name[-1::-1]) # 註意:如果用到了0下標,則會少一個值 print("從右向左取值name[-1:0:-1],取出全部元素:", name[-1:0:-1]) # 從右向左取值(間隔一個取一個) print("從右向左取值,間隔一個取一個:", name[-1::-2]) # 只打印 hhh,world print("只打印 hhh,world:[3::-2]", name[3::-2]) print("只打印 hhh,world:[-2::-2]", name[-2::-2]) # 默認是+1的方向 print("默認是+1的方向:", name[-2::])
count 方法統計某個元素在列表中出現的次數
name = [‘a‘, ‘b‘, ‘c‘, ‘a‘] print(name.count(‘a‘)) --> 2
index: 根據元素內容返回元素所在的位置,如果有2個相同的元素,以第一個為準
name = [‘z‘, ‘a‘, ‘b‘, ‘c‘, ‘a‘] print(‘a的第一個位置是:‘, name.index(‘a‘)) # -->1 # 強制取出第二個a的位置 print(name[name.index(‘a‘)+1::].index(‘a‘) + name.index(‘a‘)+1)
嵌套的列表練習
boy = [[‘ftl‘, 12, ‘male‘], [‘hhh‘, 13, ‘female‘], [‘pig‘, 0, ‘unknow‘]] print("info of HHH: ", boy[1]) print("age of HHH: ", boy[1][1])
for循環的特殊打印
te = [[‘Shell‘, 150], [‘Python‘, 600], [‘Mysql‘, 200], [‘Oracle‘, 400]] print("整體打印1:", te) print("整體打印2(用循環):") for i in te: print(i) print(‘te的大小:‘, len(te)) print("[k,v]的使用:") for i, v in te: print(i, v)
利用list類來創建列表: 可以看出跟使用小括號,中括號還是大括號關系不大,構造出來的都是列表
name = list([1, 2, 3, 4, 5, 6]) print(name) name2 = list((7, 8, 9, 10, 11, 12)) print(name2) name3 = list({13, 14, 15, 16, 17, 18}) print(name3)
利用列表生成器來生成列表,也可以放置函數進行操作
# 列表生成器
a = [ x*2 for x in range(10)] # 找出X並且對X進行操作 print(a) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 在函數內操作
def plus(x): return x ** 3 # b = [plus(x) for x in [1, 3, 5]] 是個序列就好 b = [plus(x) for x in range(10)] print(b) # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
列表的特殊賦值:註意元素的個數和列表裏面的數量相同
c = [‘hello‘, ‘world‘] x,y = c print(x, y) # hello world
列表的增加:append,insert,extend
append默認是插入到列表尾部,修改的是索引值
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] print(‘--------------------------------------------------------------------------------‘) print("Append修改前:", name[0:]) # append默認是插入到列表尾部 name.append(‘python‘) print("Append修改後:", name[0:]) print(‘--------------------------------------------------------------------------------‘) print("Insert修改前:", name[0:]) # 修改的是索引值 name.insert(0, "Java") print("Insert修改後:", name[0:]) print(‘--------------------------------------------------------------------------------‘)
extend 方法可以在列表的末尾一次性追加另一個序列中的多個值。
extend 方法修改了被擴展的列表,而原始的連接操作(+)會返回一個全新的列表, 且不影響原來的列表。
name = [‘a‘, ‘b‘, ‘c‘] name2 = [‘e‘, ‘f‘, ‘g‘] name2.extend(name) print("name :", name) print("name2.extend(name):", name2) name3 = [‘x‘, ‘y‘, ‘z‘] print("name + name3:", name + name3)
列表的修改:
同時修改多個元素,需要用列表來再次賦值
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] # 修改2017為2018 print("修改前:", name[0:]) name[2] = ‘2018‘ print("修改後:", name[0:]) print(‘--------------------------------------------------------------------------------‘) # 修改hello world 為 Java Python print("修改前:", name[0:]) name[0:2]=[‘Java‘, ‘Python‘] print("修改後:", name[0:])
特殊情況:如果替換和被替換的數量對不上,就會刪除那個位置的元素
name = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘] #name[1:4] ==> b c d print(name) name[1:4] = [‘B‘, ‘C‘] print(name)
列表的刪除:remove pop del
remove刪除的是元素,不是下標
pop 刪除的是下標,而且會返回刪除的元素,什麽都不寫默認刪除最後一個值
del 是一個函數,既可以刪除某個元素,也可以刪除list對象
clear 清空,但是還是保留原來的列表屬性
Remove:
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] # 刪除2017 print("修改前:", name[0:]) # remove的是元素,不是下標 # name.remove(1) --> ValueError: list.remove(x): x not in list name.remove(‘2017‘) # name.remove(name[2]) -->效果相同,相當於用列表取出元素後刪除 print("修改後:", name[0:])
Pop: 刪除下標,而且可以拿到刪除後的內容
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] # 刪除2017 print("修改前:", name[0:]) year=name.pop(2) print("修改後:", name[0:]) print("year:", year) #特殊:默認刪除最後一個元素 name.pop() print(name)
Del: 是一個函數,既可以刪除某個元素,也可以刪除list對象
# list = [‘hello‘, ‘world‘, ‘2017‘] 會有告警,因為list是關鍵字 name = [‘hello‘, ‘world‘, ‘2017‘, ‘hhh‘, ‘ftl‘] # 刪除2017 print("修改前:", name[0:]) del name[2] print("修改後:", name[0:]) # 刪除name對象 del name print("刪除name對象後:", name[0:])
其他
reverse 方法將列表中的元素反向存放
name = [‘a‘, ‘b‘, ‘c‘] name.reverse() print(name)
sort 方法用於在原位置對列表進行排序,默認升序
name = [‘z‘, ‘a‘, ‘b‘, ‘c‘, ‘a‘] name.sort() print(name) name.sort(reverse=True) print(name)
Python學習---Python下列表的學習