天天看點

Python基礎學習之7.Python元組、字典和集合1.元組2.字典3.集合

文章目錄

  • 1.元組
    • 1.1 元組的拆包
    • 1.2 字元串拆包
    • 1.3清單拆包
  • 2.字典
    • 2.1 字典簡介
    • 2.2 文法
    • 2.3 字典的使⽤
    • 2.4 copy()方法
    • 2.5 周遊字典
  • 3.集合
    • 3.1集合簡介
    • 3.2 集合的運算

1.元組

元組簡介

  • 元組表現形式tuple
  • 元組是⼀個不可變序列(⼀般當我們希望資料不改變時,我們使⽤元組,其他 情況下基本都⽤清單
  • 使⽤()建立元素
  • 元組不是空元組⾄少有⼀個 逗号(,) 當元組不是空元組時括号可以省略
  • 元組解包指将元組當中的每⼀個元素都指派給⼀個變量
tuple()
my_tuple = (1, 2, 3, 4)
print(my_tuple, type(my_tuple))
print(my_tuple[2])#列印元組中下标為2的值
           

如果元組不是空元組,那麼它至少得有一個逗号

tuple1 = (10,)
print(tuple1, type(tuple1))
           

1.1 元組的拆包

my_tuple = (1, 2, 3, 4, 5)
a, *b, c, d = my_tuple
print('a', a)
print('b', b)
print('c', c)
print('d', d)
---------------
a 1
b [2, 3]
c 4
d 5
           

在對一個元組拆包的時候,變量的數量和元組中元素的數量要把持一緻,

如果變量和元素不一緻,就可以在變量前面加上一個*,這樣會擷取元組中剩餘的元素,以清單的形式傳回.

1.2 字元串拆包

s = 'abcdef'
a, b, *c = s
print(a, b, c)
---------------
a b ['c', 'd', 'e', 'f']
           

1.3清單拆包

list1 = [1, 2, 3, 4]
a, b, *c = list1
print(a, b, c)
           

2.字典

2.1 字典簡介

字典的基本介紹

  • 字典屬于⼀種新的資料結構稱為映射(mapping) 字典的作⽤和清單類似,都是⽤來存儲對象的容器
  • 清單存儲資料的性能好,但是查詢資料的性能差,字典正好與之相反
  • 在字典中每⼀個元素都有唯⼀的名字,通過這個唯⼀的名字可以找到指定的元素
  • 元素這個唯⼀的名字我們稱之為key 通過key可以快速查詢value 也可以稱之為值
  • 字典我們也稱之為鍵值對(key-value)結構 每個字典中都可以有多個鍵值對,⽽每⼀個鍵值對我們稱其為⼀項(item)

2.2 文法

  • {key:value} 字典的值可以是任意對象
  • 字典的鍵可以是任意的不可變對象(int str bool tuple…) 字典的鍵是不能重複的,如果出現重複的後⾯的會替換前⾯的
{key:value}  #可以通過key查詢到value這個值, 是以我們也稱之為鍵值對, 每一個鍵值對我們稱呼為一項(item)
{}  dict 字典
d = {}
print(d, type(d))
           

2.3 字典的使⽤

  • dict()函數來建立字典
  • get(key[,default]) 根據鍵來擷取字典的值。第⼆個參數可以指定⼀個預設值,當擷取不到值的時候會傳回預設值80
  • update() 将其他字典的key-value添加到目前的字典當中 del 删除字典中的key-value
  • popitem() 删除字典最後的⼀個key-value 這個⽅法是有傳回值的。删除之後它會将删除的key-value作為傳回值傳回
  • pop(key[,default]) 根據key删除⾃定中的value。第⼆個參數可以指定⼀個預設值,當擷取不到值的時候會傳回預設值
#當字典中的key有重複的時候,後面的資料會替換前面的資料
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神',
    'name': '周慧敏'
}
print(d['name'])
d1 = dict(name='劉亦菲', age=18)
print(d1)
----------------------------------
周慧敏
{'name': '劉亦菲', 'age': 18}
           

2.4 copy()方法

  • copy() ⽅法⽤來對字典進⾏淺複制(淺方法隻複制第一層)
  • 注意:潛複制隻會複制字典本身,如果字典中還有個字典是不會進⾏複制的。

2.5 周遊字典

我們主要可以通過3種⽅式對字典進⾏周遊

  • keys() 該⽅法傳回字典所有的key
  • values() 該⽅法傳回⼀個序列 序列中儲存有字典的值
  • items() 該⽅法會傳回字典中所有的項 它傳回⼀個序列,序列中包含有雙值⼦序列(雙值分别是字典中的key和value)
雙值子序列
雙值序列  [1, 2], (1, 2),  'ab'
子序列   ['a']  資料類型嵌套
雙值子序列  [(1, 2), (3, 4)]
list1 = [(1, 2), (3, 4)]
d = dict(list1)
print(d)
           
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神'
}

print(len(d))
print('劉亦菲' in d)
print(d['age'])

# get(key, default)
# 如果是沒有這個key,傳回None,不會報錯
# 也可以指定一個預設值,來作為第二個參數,這樣擷取不到key值的是偶可以傳回預設值
print(d.get('xec'), '你是誰')
           
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神'
}
# 修改字典
# d[key] = value
d['age'] = 16
print(d)
# 沒有這個key-value就是添加
d['height'] = 174
print(d)
-----------------------------------
{'name': '劉亦菲', 'age': 16, 'gender': '女神'}
{'name': '劉亦菲', 'age': 16, 'gender': '女神', 'height': 174}
           
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神'
}
# 添加 setdefault(key, default)
# 如果這個key已經存在于字典中,則傳回value值,不會對字典造成影響
# 如果不存在,則向字典中添加key-value
res = d.setdefault('name', '周慧敏')
res = d.setdefault('height', 170)
print(res)
print(d)
-------------------------------------
170
{'name': '劉亦菲', 'age': 18, 'gender': '女神', 'height': 170}
           
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神'
}
# 添加 update()  将其他的字典當中的key-value添加到目前的字典中
d1 = {1: '1', 2: '2'}
d.update(d1)
print(d)
           
d = {
    'name': '劉亦菲',
    'age': 18,
    'gender': '女神'
}
#删除
#del  删除字典中的key-value
del d['age']
print(d)

pop(key, default)
res = d.pop('height')
print(res)
print(d)

popitem() #随機删除一個鍵值對,一般都是删除最後一個
#他會将删除後的鍵值對作為傳回值傳回
res = d.popitem()
print(res)
print(d)

clear()  #清空字典
           

3.集合

3.1集合簡介

  • 集合表現形式set 集合和清單⾮常相似
  • 不同點
    • 集合隻能存儲不可變對象
    • 集合中存儲的對象是⽆序的
    • 集合不能出現重複元素
  • 使⽤{}來建立集合
  • 可以通過set()來将序列和字典轉換成集合
  • len() 使⽤len()來擷取集合中元素的數量
  • add()像集合中添加元素
  • update()将⼀個集合中的元素添加到另⼀個集合當中
  • pop()随機删除集合中的⼀個元素⼀般是删除最後⼀個元素 remove() 删除集合中指定的元素
  • clear() 清空集合
s = {}
print(type(s))
s = set()
print(s, type(s))
s = {6, 8}
a, b = s
print(a)
print(b)
print(s)
-------------------------------------
<class 'dict'>
set() <class 'set'>
8            #集合是無序性的
6
{8, 6}
{1}
           
  • 集合隻能存儲不可變對象
  • 集合中存儲的對象是無序的
  • 集合不能出現重複元素 # 用集合去做去重的操作
s = {1, 2, 3, 'sdfb', (1, 2), 1, 2, 3}
print(s)

list1 = [1, 2, 3, 4, 4, 3, 2, 1]
print(list(set(list1)))

s = set()
# in  not in  len()
# add()  添加元素進集合
s.add(1)
print(s)
           
# update()  将一個集合中的元素添加到另一個集合中
s1 = {2, 3, 4, (1, 2)}
s.update(s1)
print(s)

#pop() 随機删除
s.pop()
print(s)

#remove() 指定删除元素
s.remove((1, 2))
print(s)

clear()
           

3.2 集合的運算

  • “&”交集運算
  • “|”并集運算
  • “-”差集運算
  • “^”亦或集
  • “<=”檢查⼀個集合是否是另⼀個集合的⼦集
  • “<” 檢查⼀個集合是否是另⼀個集合的真⼦集
  • “>=”檢查⼀個集合是否是另⼀個集合的超集
  • “>”檢查⼀個集合是否是另⼀個集合的真超集