1. 程式人生 > >01.Python基礎-3.集合容器

01.Python基礎-3.集合容器

另一個 清空 裏的 在那 遍歷 不可 1.10 value sid

1 列表list

1.1 列表介紹

  1. Python內置的一種數據類型是列表:list
  2. 有序的集合,可隨時添加和刪除其中的元素。
  3. 每個元素都分配一個數字 ——它的位置,或索引。0,1,2,3……
  4. 可存放各種類型的數據

1.2 定義列表

列表名 = [值1,值2,值3.......]

1.3 列表-查 index count len max min

  1. 根據下標查找值 值 = xxx[index]
name = [‘a‘, ‘b‘, ‘c‘]
# 下標從0開始
n1 = name[0] # ‘a‘
n2 = name[1] # ‘b‘
  1. 從列表中找出某個值第一個匹配項的索引位置 xxx = 列表.index(值)
‘‘‘
通過值獲取下標,只能獲取第一次出現的位置
如果這個值不存在,則報錯 VakueError
‘‘‘
nums = [1, 11, 88, 43]
where = nums.index(88) # 2
  1. 統計某個元素在列表中出現的次數 xxx = 列表.count(值)
‘‘‘
nums.count(),獲取此值在list中的個數
如果沒有就是0
‘‘‘
nums = [1, 11, 88, 43]
num = nums.count(999) # 0
  1. 查詢列表的長度,元素的個數 xxx = len(列表)
# len(列表名)可以獲取集合、字符串的長度
nums = [1, 11, 88, 43]
nums_len = len(nums) # 4
  1. 查看列表中元素的最大值,最小值 max() min()
nums = [1, 11, 88, 43]
a = max(nums) # 88
b = min(nums) # 1

1.4 列表增 append insert extend

  1. xxx.append(值)
    作用:新增到末尾
nums = [1, 11, 88, 43]
nums.append(22)
print(nums) # [1, 11, 88, 43, 22]
  1. xxx.insert(下標,值)
    作用:插入到指定位置
nums = [1, 11, 88, 43]
nums.insert(2, 22)
print(nums) # [1, 11, 22, 88, 43]
nums.insert(-1, 33) # 插入至倒數第二個的位置
print(nums) # [1, 11, 22, 88, 33, 43]
  1. xxx.extend(列表)
    作用:列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。
a = [‘aa‘, ‘bb‘]
b = [1 , 2]
a.extend(b)
print(a) # [‘aa‘, ‘bb‘, 1 , 2]

1.5 列表-改

xxx[下標] = 值

a = [‘aa‘, ‘bb‘]
a[0] = 111
print(a) # [111, ‘bb‘]

1.6 列表-刪

1.刪除末尾元素,並返回此元素 xxx.pop()

‘‘‘
如果不寫下標,刪除最後一個
如果寫下標,就刪除對應下標的內容
‘‘‘
nums = [110, 120, 119]
num = nums.pop() # 119
print(nums) # [110, 120]

nums = [110, 120, 119]
num = nums.pop(1) # 120
print(nums) # [110, 119]
  1. 根據元素下標刪除 del xxx[下標]
# del 刪除指定下標的值,無返回值!
nums = [110, 120, 119]
del nums(1)
print(nums) # [110, 119]
  1. 根據元素的值刪除 xxx.remove(值)
# remove()根據值進行刪除,無返回值!
nums = [110, 120, 119]
nums.remove(120)
print(nums) # [110, 119]

1.7 列表-判斷

  1. in(存在)

如果存在那麽結果為True,否則為False

  1. not in(不存在)

如果不存在那麽結果為True,否則False

1.8 列表-腳本操作

num1 = [1, 2, 3]
num2 = [4, 5, 6]
ret = num1 + num2 # [1, 2, 3, 4, 5, 6]

num1 = [1, 2, 3]
ret = num1 * 2 # [1, 2, 3, 1, 2, 3]

1.9 列表-排序

  1. 反向列表中元素 xxx.reverse()
nums = [110, 120, 119]
nums.reverse() # [119, 120, 110]
  1. 排序 xxx.sort()

1.10 列表-切片

列表[num1:num2:num3]

num1,num2都是列表的下標, num3是間隔, 返回一個新的列表

1.11 遍歷(循環)

1.12 傳遞

  1. 可變的值 list列表

如果這個變量存儲的是可變的值,然後傳遞給另外一個變量,此時變量指向同一塊內存空間,然後任意一方做了修改,都會影響這個變量

比如 在一個酒店中的一個房間居住,只有一臺電視,任何一個人換臺都會影響另一個人

  1. 不可變的值 數字、字符串、bool、None、元組

如果這個變量存儲的是不可變的值,然後傳遞給另外一個變量,此時,二者變量指向同一塊內存空間,然後,任何一方做了修改,該變量都會被重新復制,不會影響另一個變量

比如 在一個酒店中的兩個房間居住,每個房間都有一臺電視,任何一個屋中換臺均不影響他人

2 元組tuple

  1. Python的元組與列表類似,只是一點,元組裏的值不能修改。
  2. 元組使用小括號,列表使用方括號。
  3. 元組的功能 = 列表不修改的功能

3 列表和元素相互轉換

  1. ls = list(元組)
    元組轉列表

  2. tu = tuple(列表)
    列表轉元組

註意:這兩個方法都是得到一個新的,不會修改原來的

4 字典dict

4.1 字典介紹

Python內置了字典,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,唯一定位一個值,查找速度快。

4.2 字典定義

  1. 格式

字典 = {key1 : value1, key2 : value2 ......}

  1. 鍵和值
  • 鍵必須是唯一的,但值則不必
  • 值可以取任何數據類型,如字符串,數字或元組

4.3 增/改 字典[鍵] = 值

如果次key不存在,就是往字典裏新增一個鍵值對;否則,就是修改

一個key只能對應一個value,多次對一個key放入value,後面的值會把前面的值覆蓋

student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
# 新增
student1[‘age‘] = 22
print(student1) # {‘id‘: 1, ‘name‘: ‘老王‘, ‘age‘: 22}
# 修改
student1[‘id‘] = 10
student1[‘id‘] = 7
print(student1) # {‘id‘: 7, ‘name‘: ‘老王‘, ‘age‘: 22}

4.4 刪

  1. 字典.pop(鍵)

根據鍵,刪除指定的值,並將此值返回

  1. del 字典[鍵]

根據鍵,刪除指定的值,無返回值

  1. 字典.clear()

清空字典裏的鍵值對

4.5 查

  1. 值 = 字典[鍵] 根據鍵查詢值
student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
sid = student1[‘id‘] # 1
# 如果鍵不存在,則報錯 KeyError
  1. 字典.get(鍵[,默認值]) 如果key不存在,可以返回None,或者自己指定的value
student1 = {‘id‘: 1, ‘name‘: ‘老王‘}
sid = student1.get(‘id‘) # 1

sid = student1.get(‘ids‘) # None

sid = student1.get(‘ids‘, ‘未知‘) # 未知

4.6 判斷

key in dict
如果鍵在字典中存在,返回True
否則,返回False

4.7 遍歷(循環)

使用for循環遍歷的三種方式

for key in dict:
    print(‘%s:%s‘%(key,dict[key]))

# dict.keys() 以列表形式返回一個字典所有的鍵
# dict.values() 以列表形式返回一個字典所有的值
for key in dict.keys():
    print(‘%s:%s‘%(key,dict[key]))

# 推薦
# dict.items() 以列表形式返回可遍歷的(鍵, 值) 元組數組
for k,v in dict.items():
    print(‘%s:%s‘%(k,v)

4.8 其他

  1. dict.copy()
  • 返回一個新的字典,內容一樣,地址不同!!!
  1. dict.fromkeys(seq[, val]))
  • 創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有值對應的初始值
d1 = dict.fromkeys([‘a‘,‘b‘,‘c‘],‘老王‘)
print(d1) # {‘a‘: ‘老王‘, ‘b‘: ‘老王‘, ‘c‘: ‘老王‘}
  1. dict.setdefault(key, default=None)
  • 和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default
  • 如果鍵在字典中,返回這個鍵所對應的值。
  • 如果鍵不在字典中,向字典中插入這個鍵,並且以default為這個鍵的值,並返回 default。default的默認值為None
  1. dict.update(dict2)
  • 把字典dict2的鍵/值對更新到dict裏

4.9 字典與列表對比

  1. 語法上
  • ls = [v1, v2 ...]
  • dict = {k1:v1, k2:v2 ...}
  1. 速度上:dict>list
  2. 內存:list占用相對dict較小
  3. 存儲內容:都可以存儲任意類型的變量
  4. 獲取方式:list-下標 dict-鍵

5 集合set

set是一個無序,不能重復的集合容器,所以可以用來過濾重復元素。

  1. add(obj) 新增
  2. remove(obj) 移除
  3. | 並集
  4. & 交集
    • 差集

列表,元組,字典,集合 的比較

  1. list 可變,有序,可重復
  2. tuple 將list的[]變成(),不可變,有序,可重復
  3. set 可變,無序,不可重復
  4. dict 鍵值對,可變

list() tuple() set()三者可相互轉換

01.Python基礎-3.集合容器