1.列表
Python內置的一種有序、可變的序列數據類型;
列表的定義:
[ ]括起來的逗號分隔的多個元素組成的序列
列表對象的創建:
(1)直接賦值=
>>> list1 = []#創建一個空列表賦值給list1
>>> list2 = [1,2,3,4,5]#創建一個元素為整數的列表對象list2
>>> list3 = [‘Python’,[6,6,6],5.13]#創建元素為字符串、列表的對象list3;
>>> list4 = [['喬峰','M',35],['東方不敗','F',36]] #元素的數據類型可以各不相同
(2)list()函數
list()函數可將可迭代對象的數據轉換為列表,如字符串、元組、range對象等
>>> x = list() # 創建一個空列表[ ]
>>> y = list((1,2,3,4,5)) # y的值為 [1, 2, 3, 4, 5]
>>> z = list(range(5)) # z的值為 [0, 1, 2, 3, 4]
>>> s = list(‘Python’) # s的結果為['P', 'y', 't', 'h', 'o', 'n']
Tips:append()和extend()方法屬原地操作,不改變列表在內存的起始地址
列表的主要操作:
元素的增、刪、改、查
增加列表元素:列表元素增加或刪除時,列表對象自動進行擴展或收縮內存。
運算符“+” ,不建議!
>>> l1 = [1,2,3]
>>> l1 = l1+[10] #創建新列表,非在l1后增加元素
>>> l1 #還記得基于值的內存管理方式嗎?
[1, 2, 3, 10]
列表對象的append()方法
append()方法在列表尾部增加元素,類型任意
>>> x = [ ] #append()方法只能有一個參數
>>> x.append(‘喬峰’) # 增加字符串元素
>>> x.append([1999,7,7]) # ['喬峰', [1999, 7, 7]]
列表對象的extend()方法
extend()方法將另一個迭代對象的所有元
素添加至該列表對象尾部
>>> x.extend(['M',35])
>>> x
['喬峰', [1999, 7, 7], 'M', 35]
增加列表元素:列表元素增加或刪除時,列表對象自動進行擴展或收縮內存。
列表對象的insert()方法:涉及插入位置之后所有元素的移動,影響速度;
insert()方法將元素添加至列表的指定位置
>>> l1 = [1,2,4,5]
>>> l1.insert(2,3)# 在下標為2的位置插入元素3
>>> x
[1,2,3,4,5]
>>> x.insert(2,[2.5,2.6])
>>> x
[1, 2, [2.5,2.6], 3, 4, 5]
乘法*擴展列表對象。
*復制列表元素,生成一個新列表
>>> x = [1,2,3]*3
>>> x
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> y = [1,[2,3]]*2
>>> y
[1, [2, 3], 1, [2, 3]]
列表的主要操作:元素的增、刪、改、查
刪除列表元素:
del命令
del命令可以刪除列表元素,也可刪除整個列表對象
>>> x = ['喬峰', [1999, 7, 7], 'M', 35]
>>> del x[1] #刪除下標索引為1的元素:[1999, 7, 7]
>>> del x #刪除整個列表
列表對象的pop()方法
pop()方法刪除并返回指定(默認為最后一個)位置
上的元素,若位置索引超出范圍則拋出異常。
>>> x = ['喬峰', [1999, 7, 7], 'M', 35]
>>> age = x.pop() # ['喬峰', [1999, 7, 7], 'M']
>>> birth = x.pop(1) # ['喬峰', 'M']
列表對象的remove()方法
remove()方法刪除首次出現的指定元素,若
列表中不存在指定元素,則拋出異常。
>>> birth.remove(7)
>>> birth
[1999, 7]
列表的主要操作:元素的增、刪、改、查
獲取列表元素:
下標索引的方式訪問單個元素;
切片方式:
Object [ start?:?end?:?step ]????????????????????????????????????????IndexError: list index out of range
>>> x = ['喬峰', [1999, 7, 7], 'M', 35]
>>> name = x[0] # name值為:'喬峰' >>>> x[-1] = 40
>>> x
['喬峰', [1999, 7, 7], 'M', 40]
列表、元組和字符串均支持雙向索引
切片詳解????????????????????????
?適用于可用于列表、元組、字符串、range對象等
Object [ start?:?end?:?step ],切片操作不會因為下標越界而拋出異常,代碼更健壯
>>> aList = [1, 2 3, 4, 5, 6, 7, 8, 9, 10]
>>> aList[ : : ] #返回包含所有元素的新列表
>>> aList[::-1] #逆序的所有元素
>>> aList[::2] #偶數位置,隔一個取一個
>>> aList[1::2] #奇數位置,隔一個取一個
>>> aList[3::] #從下標3開始的所有元素
>>> aList[3:6] #下標在[3, 6)之間的所有元素
>>> aList[0:100] #前100個元素,下標越界,自動截斷
>>> aList[100:] #下標100之后的所有元素,越界,自動截斷,返回空列表[ ]
列表的主要操作:元素的增、刪、改、查
列表相關查詢:
(1)index()方法獲取指定元素首次出現的下標
(2)count()方法統計指定元素在列表對象中出現的次數
(3)“in”關鍵字來判斷一個值是否存在于列表中,返回結果為“True”或“False”
>>> x= ['zhang','xu','喬峰']
>>> x.index('喬峰’)
2
列表的主要操作:元素的增、刪、改、查
基于下標索引和切片,可直接使用賦值語句修改列表元素值
>>> x = ['喬峰', [1999, 7, 7], 'M', 35, 1.83]
>>> x[-2] = 40 #修改年齡為40,結果為['喬峰', [1999, 7, 7], 'M', 40, 1.83]
>>> x[:2] = [‘東方’,[1966,6,6]] #替換前兩個元素,結果為['東方', [1980, 6, 6], 'M', 40, 1.83]
>>> x[:2:-1] = [1.75,54] #逆序替換后兩個元素!結果為['東方', [1980, 6, 6], 'M', 54, 1.75]
>>> x[1:3] = [ ] #刪除下標1到3的3個元素,結果為[‘東方', 54,1.75]
>>> del x[::2] #刪除下標位置為偶數的元素,結果為[54]
與列表統計或操作相關的其他內置函數和列表方法
編寫.py代碼,實現以下功能:
1.石頭、剪刀、布人機大戰游戲
人類通過輸入1,2,3分別代表出石頭、剪刀和布;
計算機隨機出石頭、剪刀和布手勢;
判斷誰贏了并給出結果。
Tips:
可將石頭、剪刀、布放在一個列表中;
可將所有人勝的情況列舉出并放在一個列表中,即當人出石頭、剪刀、布而計算機出剪刀、
布和石頭時,人贏;不在上述三種情況的,機器贏。
使用random庫進行隨機操作。
編寫.py代碼,實現以下功能:
模擬用戶登錄系統和相關操作:
1. 建立用戶名列表user,用戶包括:admin, root, guest
2. 建立用戶的密碼列表pwd,對應密碼為:admin, 123, 456
3. 輸入一個用戶名,如果存在該用戶,則繼續輸入密碼;如果不存在該用
戶,則顯示:該用戶不存在。密碼正確,顯示‘登錄成功’;密碼不正確,提
示密碼錯誤;[登錄成功后,可修改密碼]。
4. root用戶登錄成功后,可以對用戶增、刪。
列表推導式(解析式)?????????list comprehension
優雅神奇的列表生成方式,適用于字典、集合等可迭代結構
將for循環壓縮成一行代碼,生成列表、字典或集合等可迭代數據結構(iterables)
???????