1. 程式人生 > >list列表 tuple元組 range操作 dict字典 set集合 及相關操作

list列表 tuple元組 range操作 dict字典 set集合 及相關操作

list列表

1. 什麼是列表
定義: 能裝物件的物件
在python中使用[]來描述列表, 內部元素用逗號隔開. 對資料型別沒有要求

列表存在索引和切片. 和字串是一樣的.

2. 相關的增刪改查操作(重點)
新增:
  1. append() 追加
  2. insert(位置, 元素) 插入指定元素到指定位置
刪除:
  1. pop(index) 根據索引刪除
  2. remove(元素) 根據元素刪除
修改:
索引修改
lst[索引] = 元素
查詢:
for迴圈.

索引和切片
lst = ["天龍八部", "西遊記", "紅樓夢", "銀平煤", "綠平煤"]
print(lst[3])
print(lst[-3])
print(lst)
print(lst[1:4]) # 切片,原來是什麼型別. 得到的就是什麼型別
print(lst[-1::-2]) # 倒著切


lst = ["凡人修仙傳", "誅仙", "神墓"]
# 新增 append() 追加. 在後面新增
lst.append("看見")
lst.append("追風箏的人")

# 插入 insert(位置, 元素), 效率相對比較低
lst.insert(1, "琴帝")

# 迭代新增, 把傳遞進去的引數進行迭代. 把每一項新增到列表的末尾
lst.extend(["胡辣湯","豬蹄子", "豬頭肉", "五花肉"])

print(lst)


# 刪除
lst = ["鬥破蒼求", "手機", "爵跡", "滿城盡帶黃金甲", "三生三世十里桃花"]

# # pop() 預設從後往前刪
# lst.pop()
# # pop(索引) 按照索引位置刪除


# lst.pop(1)

# remove(元素) 移除
# lst.remove("滿城盡帶黃金甲") # 當元素不存在的時候會報錯

# del lst[::2] # 用切片或者索引刪除 不常用
lst.clear() # 清空.

print(lst)

修改
lst = ["蘇秦", "武大", "武二", "寶元", "李誕", "池子", "王建國"]
# lst[3] = "松江" # 通過索引修改 index out of range 索引下標越界
# print(lst)
# lst[1:3] = ["麻花藤"] # 迭代更新(不常用)
# print(lst)
lst[1:5:2] = ["麻花藤", "碼雲"] # 坑: 如果步長不是1. 元素的個數必須要和切片的個數一致


print(lst)

lst = ["alex", "wusir", "胡辣湯"]
# 把列表中的wusir替換成大寫 WUSIR
# 首先你要獲取到2元素
# 變成大寫
# 塞回去(必須要放回去)
lst[1] = lst[1].replace("wusir", "WUSIR")
print(lst)

查詢, 列表是一個可迭代物件
lst = ["jay", "wlh", "lzw", "wf"]
for item in lst:      # item是lst中的每一項
print(item)

for i in 123:      # 'int' object is not iterable
print(i)

3. 列表的巢狀
多個列表互相巢狀

例如:

lst = [["張藝謀", "馮小剛", "陳凱歌"], ["李安", "王家衛", "王晶"], ["周杰倫",["abc", "alex_wusir", ["胡辣湯", "c"]], "風扇哥"]]
print(lst[1][1][2])

# 把王晶換成"賈樟柯"

lst[1][2] = "賈樟柯"

 print(lst)
# 降維操作 ["哈哈", "hehe", "houhou"] 一維 [[1,2,3], [12,4,5], [6,7,8]] 二維
# 數數
lst[2][1][1] = lst[2][1][1].replace("_", "$")
print(lst)


4. 列表的其他操作
1. count() 計數
2. sort() 排序 reverse = True
3. reverse() 翻轉
4. len() 求長度

lst = ["太白", "太白", "太黑", "日天", "女神", "alex", "太白"]

print(lst.count("太白")) # 檢視xxx元素出現的次數

lst = [1, 8,12,22,1,1,2,33,4,5]
# lst.sort() # 排序. 預設升序
lst.sort(reverse=True) # reverse 反向, 降序
print(lst)

lst = ["赤木", "櫻木花道", "流川楓", "三井"]
lst.reverse() # 把列表翻轉
print(lst)

lst= [1,2,3,4,5,"胡辣湯"]
print(len(lst)) # 檢視列表中元素的個數

list # 按住ctrl +滑鼠左鍵

 

tuple元組

元組用()表示, 只讀列表. 
tu = ("DNF", "LOL", "王者榮耀", "QQ飛車", "炫舞", {}, tuple(), [])
print(tu)
# tu[1] = "呵呵" # 'tuple' object does not support item assignment
print(tu)

元組也有索引和切片
print(tu[3:5])
print(tu[3:7:2])

元組有坑
空元祖
tu = tuple() # 固定寫法
元組中如果只有一個元素
tu = (1) # 不是元組 <class 'int'>
tu = (1, ) # 這個是元組 <class 'tuple'>
print(type(tu))

好習慣: 寫元組的時候末尾加個逗號

tu = ("鍋包肉", "酸菜燉粉條+五花肉", "紅燒鯉魚", "紅燒肉")
# 元組也是可迭代的
for item in tu: # 可以使用for迴圈
print(item)


tu = (1, "哈哈", "胡辣湯", ["忍者", "神龜"])
# tu[1] = "呵呵" # 元組不可變
tu[3] = ["我是新列表"] # 改變了指向. 報錯
tu[3].append("孫悟空") # 元組沒改. 該的是元素內部 沒有改變元組的指向. 不報錯
print(tu)

range操作

i = 1
while i <=100:
print(i)
i += 1

range(引數) [0,引數)
for i in range(20):     # range()可以被迭代 0-9
print(i)

range(引數1, 引數2) [引數1, 引數2) 切片
for i in range(10, 20):
print(i)

range(引數1, 引數2, 引數3) [引數1, 引數2) 每隔引數3個位置取一個
for i in range(10, 20, 3):
print(i)

lst = ["周杰倫", "動畫城", "大風車", "隨便加", "寶寶", "孟孟", "萌萌", "孟萌"]

for item in lst:      # 只能拿到元素. 獲取不到索引
print(item)

for i in range(len(lst)): # i就是索引 lst[i]元素    *****利用for   in 拿到索引
print(i, lst[i])

dict字典