python內置的一種數據類型是列表:list。list 是一種有序集合,能夠隨時添加和刪除其中的元素。python
列表的增刪改查git
1. 增長api
(A) append 在末尾追加元素安全
li = ['xiaofei', 'hkey'] li.append('zhangsan') print(li) # 執行結果: # ['xiaofei', 'hkey', 'zhangsan']
(B) insert 在指定索引位置插入元素app
li = ['xiaofei', 'hkey'] li.insert(1, 'zhangsan') # 注意第一個參數是int類型的索引位置,第二個參數是插入的元素 print(li) # 執行結果: # ['xiaofei', 'zhangsan', 'hkey']
(C) extend(iterable) 等價於 for i in li.append(i) 在列表的最後追加一個可迭代對象ide
li = ['xiaofei', 'hkey'] li.extend('jack') # 等價於 for i in 'jack': li.append(i) 參數是一個可迭代對象 print(li) # 執行結果: # ['xiaofei', 'hkey', 'j', 'a', 'c', 'k']
2. 刪除spa
(A) pop(index=None) 返回刪除的元素,默認刪除最後一個code
li = ['xiaofei', 'hkey'] name = li.pop() # 刪除最後一個元素並獲取到刪除的元素 print(name) # 最後一個元素是 'hkey' print(li) # 執行結果: # hkey # ['xiaofei']
(B) remove(value) 按照元素刪除對象
li = ['xiaofei', 'hkey'] li.remove('xiaofei') # 參數爲指定的元素,刪除指定元素。 print(li) # 執行結果: # ['hkey']
(C) clear() 清空列表blog
li = ['xiaofei', 'hkey'] li.clear() print(li) # 執行結果: # []
(D) del li 刪除li列表
li = ['xiaofei', 'hkey'] del li # 直接刪除內存中的 li 列表 print(li) # 執行結果: # NameError: name 'li' is not defined
(E) del li[:2] 切片刪除
li = ['xiaofei', 'hkey', 'zhangsan'] del li[:2] # 刪除索引位置 2 以前的元素 [0, 1, 2],不包括 2 print(li) # 執行結果: # ['zhangsan']
3. 修改 (對於列表來講,修改就是替換)
li = ['xiaofei', 'hkey', 'zhangsan'] li[2] = 'jay' # 列表的修改操做,就直接經過索引修改元素內容 print(li) # 執行結果: # ['xiaofei', 'hkey', 'jay']
4. 查詢
列表的查詢能夠直接經過切片或者索引直接查詢,也可經過for循環遍歷,可以被 for 循環遍歷的類型都是可迭代對象;
5. 列表排序
(A) 正向排序:sort()
li = [6, 5, 3, 1, 2, 4] li.sort() # 先進行排序,而後在打印列表,正向排序 print(li) # 執行結果: # [1, 2, 3, 4, 5, 6]
(B) 逆向排序: sort(reverse=True)
li = [6, 5, 3, 1, 2, 4] li.sort(reverse=True) # 先進行排序,而後在打印列表,逆向排序 print(li) # 執行結果: # [6, 5, 4, 3, 2, 1]
(C) 反轉: reverse()
li = [6, 5, 3, 1, 2, 4] li.reverse() # 反轉排序,將元素倒過來。 print(li) # 執行結果: # [4, 2, 1, 3, 5, 6]
6. 公共方法
(A) len() 統計列表共有多少元素
li = ['xiaofei', 'hkey', 'jay'] print(len(li)) # 執行結果: # 3
(B) count() 統計同一個元素,在列表中出現幾回
li = ['xiaofei', 'hkey', 'jay', 'hkey'] print(li.count('hkey')) # 統計同一個元素,在列表中出現幾回。 # 執行結果: # 2
(C) index() 經過索引查找元素信息
li = ['xiaofei', 'hkey', 'jay', 'hkey'] print(li.index('hkey')) # 經過元素信息查找索引位置,默認獲取第一個匹配到的元素索引 # 執行結果: # 1
tuple 元組,只讀列表,可循環查詢,可切片
由於元組不可變,因此代碼更安全。若是可能,能在元組代替列表的地方就儘可能使用元組;
# 把 xiaofei 修改成大寫 tu = (1,2,3,['xiaofei', 'kk'], 'hkey') tu[3][0] = tu[3][0].upper() print(tu) # 執行結果: # (1, 2, 3, ['XIAOFEI', 'kk'], 'hkey')
元組中的可變類型都是能夠修改的,例如:list類型
列表 -- 字符串 join() 方法
字符串 -- 列表 split() 方法
name = ['xiaofei', 'hkey'] print(''.join(name)) # 以空爲分隔符將列表鏈接成字符串類型 print('*'.join(name)) # 以*爲分隔符將列表鏈接成字符串類型 # 執行結果: # xiaofeihkey # xiaofei*hkey
s1 = 'xiaofei hkey' print(s1.split()) # 執行結果: # ['xiaofei', 'hkey']
range() 的使用
第一個參數:int類型
第二個參數:int類型
第三個參數:int類型,步長
遵循取頭不取尾的規則
(1)循環次數的控制
# 輸出 3 次 hello, world for i in range(3): print('hello, world') # 執行結果: # hello, world # hello, world # hello, world
(2)數字規則的輸出
# 輸出 10 之內的 奇數 或者 偶數 # 奇數 print(list(range(2, 10, 2))) # 執行結果: # [2, 4, 6, 8] # 偶數 print(list(range(1, 10, 2))) # 執行結果: # [1, 3, 5, 7, 9]
做業:
1. 有變量 name = 'aleX leNb' 完成以下操做:
(1)移除 name 變量對應的值兩邊的空格,並輸出處理結果;
(2)移除 name 變量左邊的 'al' 並輸出結果;
(3)移除 name 變量右邊的 'Nb',並輸出結果;
(4)移除 name 變量開頭的 'a' 與最後的 'b',並輸出處理結果;
(5)判斷 name 變量是否以 'al' 結尾,並輸出結果;
(6)判斷 name 變量是否以 'Nb' 結尾,並輸出結果;
(7)將 name 變量對應的值中的第一個'I' 替換成 'p',並輸出結果;
(8)將 name 變量對應的值中的一個'i'替換成'p',並輸出結果;
(9)將 name 變量對應的值根據全部的 'I' 分隔,並輸出結果;
(10)將 name 變量對應的值變大寫,並輸出結果;
(11)將 name 變量對應的值變小寫,並輸出結果;
(12)將 name 變量對應的值變小寫,並輸出結果;
(13)將 name 變量對應的值首字母'a'大寫,並輸出結果;
(14)判斷 name 變量對應的值字母'i'出現幾回,並輸出結果;
(15)若是判斷 name 變量對應的值前四位'I'出現幾回,並輸出結果;
(16)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則報錯,並輸出結果)
(17)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則返回-1)輸出結果;
(18)從 name 變量對應的值中找到 'X le'對應的索引,並輸出結果;
(19)請輸出 name 變量對應的值的第 2 個字符;
(20)請輸出 name 變量對應的值的前 3 個字符;
(21)請輸出 name 變量對應值的後 2個字符;
(22)請輸出 name 變量對應的值中 'e'所在索引位置;
2. 使用 while 和 for 循環分別打印字符串 s='asdfer'中的每一個元素;
3. 實現一個整數加法計算器;
如:content = input('輸入內容:') # 如用戶輸入 1+1 2+8 5+
4. 計算用戶輸入的內容中有幾個整數;
如 content=input('請輸入內容:') 如;asdfasdf234asdf12sdf
name = 'aleX leNb' # 1. 有變量 name = 'aleX leNb' 完成以下操做: # (1)移除 name 變量對應的值兩邊的空格,並輸出處理結果; print(name.strip()) # (2)移除 name 變量左邊的 'al' 並輸出結果; print(name[2:]) # (3)移除 name 變量右邊的 'Nb',並輸出結果; print(name[:-3]) # (4)移除 name 變量開頭的 'a' 與最後的 'b',並輸出處理結果; print(name[1:-1]) # (5)判斷 name 變量是否以 'al' 結尾,並輸出結果; print(name.endswith('al')) # (6)判斷 name 變量是否以 'Nb' 結尾,並輸出結果; print(name.endswith('Nb')) # (7)將 name 變量對應的值中的第一個'l' 替換成 'p',並輸出結果; name1 = name.replace('l', 'p', 1) print(name1) # (8)將 name 變量對應的值中的一個'l'替換成'p',並輸出結果; name1 = name.replace('i', 'p', 1) # (9)將 name 變量對應的值根據全部的 'l' 分隔,並輸出結果; print(name.split('l')) # (10)將 name 變量對應的值變大寫,並輸出結果; print(name.upper()) # (11)將 name 變量對應的值變小寫,並輸出結果; print(name.lower()) # (12)將 name 變量對應的值變小寫,並輸出結果; print(name.lower()) # (13)將 name 變量對應的值首字母'a'大寫,並輸出結果; print(name.capitalize()) # (14)判斷 name 變量對應的值字母'l'出現幾回,並輸出結果; print(name.count('l')) # (15)若是判斷 name 變量對應的值前四位'l'出現幾回,並輸出結果; print(name[0:5].count('l')) # (16)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則報錯,並輸出結果) print(name.index('N')) # (17)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則返回-1)輸出結果; print(name.find('N')) # (18)從 name 變量對應的值中找到 'X le'對應的索引,並輸出結果; print(name.find('X le')) # (19)請輸出 name 變量對應的值的第 2 個字符; print(name[1]) # (20)請輸出 name 變量對應的值的前 3 個字符; print(name[2]) # (21)請輸出 name 變量對應值的後 2個字符; print(name[-2:]) # (22)請輸出 name 變量對應的值中 'e'所在索引位置; print(name.find('e')) 2. 使用 while 和 for 循環分別打印字符串 s='asdfer'中的每一個元素; s='asdfer' for i in s: print(i) ite = iter(s) # 轉換爲可迭代對象 while True: try: each = next(ite) # 使用next循環調用,直到抓到報錯退出. except StopIteration: break print(each) 3. 實現一個整數加法計算器; 如:content = input('輸入內容:') # 如用戶輸入 1+1 2+8 5+ content = input('輸入內容:') li = content.split('+') count = 0 if li[-1] == '': li.pop() for i in li: count += int(i) print(count) 4. 計算用戶輸入的內容中有幾個整數; 如 content=input('請輸入內容:') 如;asdfasdf234asdf12sdf content=input('請輸入內容:') count = 0 for i in content: if i.isdigit(): count += 1 print(count) 5. 打印li中全部元素,包括list中的元素,逐個打印出來。 li = [1,2,3,4, 'hkey',[5,6,7,8,'xiaobai'], 'abc'] for i in li: if isinstance(i, list): for j in i: print(j) continue print(i)