python7 元組集合字典

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)
  • 刪除:
    • remove(要刪除元素)
      如果要刪除的元素不存在則報錯
    • discard(要刪除元素) 丟棄
      如果要刪除的元素不存在不報錯
    • pop()
# 增加
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

字典

格式:

  1. dict1={}
  2. dict2={key:value,key:value,key:value}

特點:

  1. key必須是唯一的
  2. value可重複
  3. 鍵值對

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章