python7 元組集合字典
元組
列表:list —> []
元組:tuple —> ()
作用就是:類似列表,也可以存放多個元素
tuple1 = (1, 2, 3, 4, 5, 6)
print(tuple1) # (1, 2, 3, 4, 5, 6)
tuple2 = (1,)
print(tuple2) # (1,)
# 使用下標
print(tuple1[1]) # 2
print(tuple1[3]) # 4
# 切片操作
print(tuple1[:3]) # (1, 2, 3)
print(tuple1[::-1]) # (6, 5, 4, 3, 2, 1)
# 遍歷 支持在for...in 遍歷打印
for i in tuple1:
print(i)
'''
1
2
3
4
5
6
'''
# 支持 in, not in
if 5 in tuple1:
print('存在')
else:
print('不存在')
# 存在
# 進行增刪改查
tuple1 += (7,)
print(tuple1) # (1, 2, 3, 4, 5, 6, 7)
# 元組不能刪除
# del tuple1[6] # TypeError: 'tuple' object doesn't support item deletion
# 元組不能修改
# tuple1[2] = 100 # TypeError: 'tuple' object does not support item assignment
n = tuple1.index(3) # 返回要查詢的元素的位置
print(n) # 2
# 要查詢的元素沒有找到則報錯 ValueError: tuple.index(x): x not in tuple
print(tuple1.count(4)) # 1
print(len(tuple1)) # 7
print(max(tuple1)) # 7
print(min(tuple1)) # 1
tuple1 = (4, 1, 3, 8, 0, 6)
result = sorted(tuple1) # l = list(tuple1) ---> l.sort() --->result
print(result) # [0, 1, 3, 4, 6, 8]
# 使用類型轉換
# 元組與列表是可以相互轉換的
tuple1 = tuple(result)
print(type(tuple1)) # <class 'tuple'>
print(tuple1) # (0, 1, 3, 4, 6, 8)
s = str(tuple1)
print(type(s)) # <class 'str'>
print(s) # (0, 1, 3, 4, 6, 8)
l = list(tuple1)
print(type(l)) # <class 'list'>
print(l) # [0, 1, 3, 4, 6, 8]
集合
- tuple,list:有序 —> index
允許重複元素 - set: 無序 沒有下標
不重複
聲明:
- set1 = {1, 3, 5, 8}
- set1 = set() 空集合
- 注意:創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典。
集合遍歷:for i in 集合:
支持:in not in 進行判斷
# 定義 set() {}
set1 = {1, 3, 5, 8, 5, 1, 5, 1}
print(type(set1)) # <class 'set'>
print(set1) # {8, 1, 3, 5}
# 空集合的聲明
set2 = set()
print(type(set2)) # <class 'set'>
print(len(set2)) # 0
print(set2) # set()
print(set1[0]) # TypeError: 'set' object does not support indexing
for i in set1:
print(i)
'''
8
1
3
5
'''
if 5 in set1:
print('存在')
# 存在
# 列表去重
import random
list1 = []
for i in range(15):
ran = random.randint(1, 10)
list1.append(ran)
print(list1) # [10, 5, 6, 9, 6, 6, 9, 7, 7, 4, 1, 3, 10, 9, 4]
set1 = set(list1)
print(set1) # {1, 3, 4, 5, 6, 7, 9, 10}
list1 = list(set1)
print(list1) # [1, 3, 4, 5, 6, 7, 9, 10]
增刪改查
- 添加:
- add()
一個一個添加 - update()
update(tuple|list)
- add()
- 刪除:
- remove(要刪除元素)
如果要刪除的元素不存在則報錯 - discard(要刪除元素) 丟棄
如果要刪除的元素不存在不報錯 - pop()
- remove(要刪除元素)
# 增加
set1 = set()
set1.add('張三')
set1.add('李四')
set1.add('王五')
set1.add('張三')
print(set1) # {'張三', '王五', '李四'}
tuple1 = ('劉德華', '張學友', '王五')
set1.add(tuple1)
print(set1) # {('劉德華', '張學友', '王五'), '張三', '王五', '李四'}
set1.update(tuple1) # 類似:# list2.extend(list1)
print(set1) # {'張學友', '劉德華', ('劉德華', '張學友', '王五'), '張三', '王五', '李四'}
# 刪除
set1.remove('張三')
print(set1) # {'張學友', '劉德華', ('劉德華', '張學友', '王五'), '王五', '李四'}
set1.discard('李四')
print(set1) # {'張學友', '劉德華', ('劉德華', '張學友', '王五'), '王五'}
set1.pop()
print(set1) # {'劉德華', ('劉德華', '張學友', '王五'), '王五'}
兩個集合
- 交集:& set1 & set2 —> 共同存在元素
- 並集:| set1 | set2
- 差集:- set1 - set2 —> 找set1與set2不一樣的元素
- 對稱差集:^ set1 ^ set2
names1 = {'lucy', 'jack', 'steven', 'admin'}
names2 = {'lucy', 'steven', 'lily'}
# 交集
result = names1 & names2
print(result) # {'steven', 'lucy'}
result = names1.intersection(names2)
print(result) # {'steven', 'lucy'}
# 並集
result = names1 | names2
print(result) # {'admin', 'lily', 'steven', 'jack', 'lucy'}
result = names1.union(names2)
print(result) # {'admin', 'lily', 'steven', 'jack', 'lucy'}
# 差集
result = names1 - names2
print(result) # {'admin', 'jack'}
result = names2.difference(names1)
print(result) # {'lily'}
# 對稱差集 ^
result = names1 ^ names2
print(result) # {'jack', 'admin', 'lily'}
result = names1.symmetric_difference(names2)
print(result) # {'jack', 'admin', 'lily'}
# 子集
print({8, 6, 3} > {8, 6}) # True
print({8, 5} < {8, 6, 3}) # False
字典
格式:
- dict1={}
- dict2={key:value,key:value,key:value}
特點:
- key必須是唯一的
- value可重複
- 鍵值對
set1={1,2,3,5,7}
dict1 = {1:‘aa’,2:‘ab’}
dict1 = {}
print(type(dict1)) # <class 'dict'>
dict2 = {'001': '張三', '002': '李四'}
print(type(dict2)) # <class 'dict'>
print(len(dict2)) # 2
dict3 = {'001': '張三', '002': '李四', '003': '張三'}
print(dict3) # {'001': '張三', '002': '李四', '003': '張三'}
dict4 = {1: 'aaa', 2: 'bbb', 3: 'ccc'}
print(dict4) # {1: 'aaa', 2: 'bbb', 3: 'ccc'}
# key不能是列表
dict5 = {[1, 2, 3]: 'abc', [1, 2, 3]: 'abcd'} # TypeError: unhashable type: 'list'
增刪改查
- 增加元素:
字典[key]=value
注意: 添加的時候主要 是判斷是否存在此key,
如果字典中已經存在一個相同的key,則後面添加的value替換了原來的value。
如果字典中不存在此key,則會添加到字典中。 - 刪除元素:
- pop(key) —> 根據key刪除字典中的鍵值對 類似: del dict[key]
- popitem() —>
- clear()
- del dict[key]
- 更新元素:
字典只能更新value
persons = {}
persons['620001'] = '雄濤'
persons['620002'] = '宗鑫'
persons['620003'] = '寶坤'
print(len(persons)) # 3
print(persons) # {'620001': '雄濤', '620002': '宗鑫', '620003': '寶坤'}
persons.pop('620003')
print(persons) # {'620001': '雄濤', '620002': '宗鑫'}
# 更新
persons['620001'] = '建華'
print(persons) # {'620001': '建華', '620002': '宗鑫'}
# 獲取
value = persons.get('620002')
print(value) # 宗鑫
# 合併
dict1 = {'620004': '武蘢'}
persons.update(dict1)
print(persons) # {'620001': '建華', '620002': '宗鑫', '620004': '武蘢'}
# 添加
persons.setdefault('620005', '詩瑤')
persons.setdefault('620005', '詩瑤2')
print(persons) # {'620001': '建華', '620002': '宗鑫', '620004': '武蘢', '620005': '詩瑤'}
print(list(persons.keys())) # ['620001', '620002', '620004', '620005']
print(list(persons.values())) # ['建華', '宗鑫', '武蘢', '詩瑤']
print(list(persons.items())) # [('620001', '建華'), ('620002', '宗鑫'), ('620004', '武蘢'), ('620005', '詩瑤')]
for id, name in persons.items():
print(id, name)
'''
620001 建華
620002 宗鑫
620004 武蘢
620005 詩瑤
'''
del persons['620001']
print(persons) # {'620002': '宗鑫', '620004': '武蘢', '620005': '詩瑤'}
persons.clear()
print(persons) # {}
可變與不可變
- 數據類型: str int float bool list tuple set dict
- 可變和不可變:
- 不可變:只要改變變量的值,如果變量的地址發生了改變,則認爲是不可變 int,str,float,bool,tuple
- 可變:變量的內部無論發生怎樣的改變,地址都不發生改變,則認爲是允許改變 list set dict
- copy():類似備份
備份的地址跟原空間的地址是不一樣
list1 = [1, 2, 3]
print(id(list1)) # 4366699784
list1.remove(2)
print(id(list1)) # 4366699784
list2 = list1
print(id(list2)) # 4366699784
list2.append(6)
print(list1, list2) # [1, 3, 6] [1, 3, 6]
print(id(list1), id(list2)) # 4366699784 4366699784
list1.remove(1)
print(list1, list2) # [3, 6] [3, 6]
print(id(list1), id(list2)) # 4366699784 4366699784
del list1
print(list2) # [3, 6]
print(id(list2)) # 4366699784
list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()
print(id(list1), id(list2)) # 4562955528 4562955464
print(list1, list2) # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
del list1
print(list2) # [1, 2, 3, 4, 5]
print(id(list2)) # 4562955464
dict1 = {1: 'aa', 2: 'bb', 3: 'cc'}
dict2 = dict1.copy()
dict3 = dict1
print(id(dict1), id(dict2), id(dict3)) # 4414712064 4414712136 4414712064
print(dict1, dict2, dict3) # {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'}
del dict1
print(id(dict2), id(dict3)) # 4414712136 4414712064
print(dict2, dict3) # {1: 'aa', 2: 'bb', 3: 'cc'} {1: 'aa', 2: 'bb', 3: 'cc'}
n = 8
print(id(n)) # 4308764832
n = 5
print(id(n)) # 4308764736
s = 'hello'
print(id(s)) # 4311136608
s = 'helloworld'
print(id(s)) # 4312845424
f = 9.9
print(id(f)) # 4310221496
f = 8.96
print(id(f)) # 4310221016
t = (1, 2, 3)
print(id(t)) # 4312778360
t = (1, 2, 3, 4)
print(id(t)) # 4312755080
list1 = [1, 2, 3, 4, 5]
print(id(list1)) # 4312632584
list1.append(8)
list1.append(9)
list1.append(7)
print(id(list1)) # 4312632584
set1 = {4, 5, 7, 8}
print(id(set1)) # 4311400520
set1.add(1)
set1.add(2)
set1.add(3)
print(id(set1)) # 4311400520
dict1 = {1: 'aa'}
print(id(dict1)) # 4311148800
dict1[2] = 'bb'
dict1[3] = 'cc'
print(id(dict1)) # 4311148800
dict1.pop(1)
print(id(dict1)) # 4311148800