Python 基礎:容器類型

目錄

1. 字符串

f-string:

字符串遍歷:

for-else 語句:

字符串切片:

字符串方法:

2. 列表

定義:

列表方法:

3. 元組

定義:

什麼時候使用元組存儲一組數據?

元組方法: 

4. 字典

特點:

格式:

增刪改查:

遍歷字典:

名片管理案例: 

字典方法:

運算符:

5. 集合

集合方法:


1. 字符串

f-string:

# f-string
name = "蘭克獎"
age = 60
f_string1 = f'獎項:{name},年齡:{age}'

a = 10
b = 20
f_string2 = f'a + b = {a + b}'

字符串遍歷:

s = "hello"
for i in s:
    print(i)

for-else 語句:

"""
格式:
for 變量 in 容器:
    重複執行的代碼塊
else:
    如果for循環不是通過break結束的時候,一定會執行的代碼塊
"""

s = "hello"
for i in s:
    if i == "m":
        print(1)
        break
else:
    print(2)

字符串切片:

# 截取到最後一個元素
s = "hello"
print(s[1:])

# 從第一個元素開始截取
s = "hello"
print(s[:3])

# 步長
s = "hello python"
print(s[2:10:2])

# 步長(可以爲負)
s = "hello python"
print(s[10:2:-2])

# 字符串的反轉(逆序)
s = "hello python"
print(s[::-1])

字符串方法:

(1)find方法(定位字符串中某字符的位置,找到之後不再繼續查找)
注:從第3個字符開始(包含第3),到第15個字符截止(不包含第15)(左閉右開區間)。字符串的字符排序是從"0"開始。如果查找不到結果爲"-1"。
h = "thhcieenable"
v1 = h.find('e',3,15)
v2 = h.find('ee')
v3 = h.rfind('e')
print(v1,v2,v3)
# 返回:5 5 6

(2)index方法(查找子序列)(如果查找不到會報錯,建議使用find查找)
h = '8rong8chi'
v = h.index('1')
print('v')
# 返回:
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/python_s3/D1/s1.py", line 103, in <module>
v = h.index('1')
ValueError: substring not found(查找不到程序報錯)

(3)count方法(在字符串中尋找子序列的個數)
注:從第4個字符開始(包含第4),到第16個字符截止(不包含第16)(左閉右開區間)。字符串的字符排序是從"0"開始。
h = 'bokeyuanbokeyuan'
v = h.count('an',4,16)
print(v)
# 返回:2

(4)partition、rpartition、split、rsplit方法(分割)
注:sep=''換行後第二行第一個字符前不出現空格。
h = 'abcacd'
v1 = h.partition('c')
v2 = h.rpartition('c')
v3 = h.split('c')
v4 = h.rsplit('c')
print(v1,'\n',v2,'\n',v3,'\n',v4,sep='')
# 返回:
('ab', 'c', 'acd')
('abca', 'c', 'd')
['ab', 'a', 'd']
['ab', 'a', 'd']

(5)isalpha方法(判斷字符串是否只是字母或漢字)
h = '馬雲mayun'
v = h.isalpha()
print(v)
# 返回:True

(6)isdecimal、isdigit、isnumeric方法(判斷字符串是否只含數字(特殊寫法的數字))
h1 = '1'
h2 = '1②'
h3 = '1②三'
v1 = h1.isdecimal()
v2 = h1.isdigit()
v3 = h1.isnumeric()
v4 = h2.isdecimal()
v5 = h2.isdigit()
v6 = h2.isnumeric()
v7 = h3.isdecimal()
v8 = h3.isdigit()
v9 = h3.isnumeric()
print(v1,v2,v3,v4,v5,v6,v7,v8,v9)
# 返回:True True True False True True False False True 

(7)islower和isupper方法(判斷是否至少有一個英文字符且字符串中的英文字符是否全爲小寫字母或全爲大寫字母)
h = 'ab'
v1 = h.islower()
v2 = h.isupper()
print(v1,v2)
# 返回:True False

(8)startswith與endswith方法(判斷字符串是否以某個子序列開頭或結尾)
h = '打麻將'
v1 = h.startswith('打')
v2 = h.endswith('不')
print(v1,v2)
# 返回:True False

(9)replace方法(將字符串中的內容替換,可以設置替換的個數)
h = 'thhhhhang'
v = h.replace('h','t',3)
print(v)
# 返回:tttthhang 

(10)upper方法(將字符串中所有字母變大寫)
h = "thhcieenable"
v = h.upper()
print(v)
# 返回:THHCIEENABLE

(11)lower方法(將字符串中所有字母變小寫)
h = 'DouDiZhu'
v = h.lower()
print(v)
# 返回:doudizhu

(12)strip、lstrip、rstrip方法(從左和從右、從左、從右刪除指定的字符串)
注:按順序刪除,不能跳過字符順序(建議多嘗試幾個其他的字符串找規律)。
h = '中華人民共和國美利堅合衆國'
v1 = h.strip('中裏利人民國衆合利')
v2 = h.lstrip('中裏利人民國衆合利')
v3 = h.rstrip('中裏利人民國衆合利')
print(v1,'\n',v2, '\n',v3)
# 返回:
華人民共和國美利堅 
華人民共和國美利堅合衆國 
中華人民共和國美利堅

(13)ljust和rjust方法(將字符串設定爲指定的長度,並額外添加設定的字符)
h = 'th'
v1 = h.ljust(6,'*')
v2 = h.rjust(6,'#')
# v3 = h.ljust(6)
print(v1,'\n',v2)
# 返回:
th**** 
####th 

(14)center方法(設置字符串寬度爲30,並將字符串居中,'華'作爲填充)
注:只能是一個字符,大於一個字符會報錯。
h = 'doudizhu'
v = h.center(30,'華')
print(v)
# 返回:華華華華華華華華華華華doudizhu華華華華華華華華華華華

(15)join方法(將字符串中的每個字符按照指定分隔符進行拼接)
h = '天王蓋地虎'
print(h)
v = '1'.join(h)
print(v)
# 返回:
天王蓋地虎
天1王1蓋1地1虎

(16)capitlize方法(將字符串首字母改爲大寫)
h = 'doudizhu'
v = h.capitalize()
print(v)
# 返回:Doudizhu

(17)casefold方法(將字符串中所有字母變小寫)(推薦)
h = 'DouDiZhu'
v = h.casefold()
print(v)
# 返回:doudizhu

(18)format方法(格式化,將字符串中的佔位符替代爲指定的值)(兩種寫法)
h = 'i am a {s},my name is {n}'
v = h.format(s = 'boy',n = 'th')
print(v)

j = 'i am a {0},my name is {1}'
u = j.format('girl','xx')
print(u)
# 返回:
i am a boy,my name is th
i am a girl,my name is xx

(19)format_map方法(格式化)
h = 'i am a {s},my name is {n}'
v = h.format_map({'s':'boy','n':'th'})
print(v)
# 返回:i am a boy,my name is th

(20)isalnum方法(判斷字符串中是否只包含字母和數字)
h = '123abc_'
v = h.isalnum()
print(v)
# 返回:False

(21)expandtabs方法(斷句功能)
注:\t爲製表符,\n爲換行符。
s = 'QQ\tpassword\n123456\t654321\n908\tth\n507\tqwert\n888\tuser\n'
v = s.expandtabs(30)
print(v)
# 返回:
QQ                            password
123456                        654321
908                           th
507                           qwert
888                           user

(22)isprintable方法(判斷字符串中是否存在不可顯示的字符,如空格,製表符,換行符)
h = 'th\tmy\n'
v = h.isprintable()
print(v)
# 返回:False

(23)isspace方法(判斷字符串是否全部是空格(製表符,換行符))
h = '    \t  \n'
v = h.isspace()
print(v)
# 返回:True

(24)title和istitle方法(將字符串變爲標題和判斷字符串是否爲標題)
h1 = 'Process finished with exit code 0'
h2 = h1.title()
v1 = h1.istitle()
v2 = h2.istitle()
print(h2,'\n',v1,'\n',v2)
# 返回:
Process Finished With Exit Code 0 
False 
True 

(25)zfill方法(設置字符串長度並用'0'填充剩餘長度不足部分)
h = 'th'
v = h.zfill(6)
print(v)
# 返回:0000th

(26)maketrans和translate方法(制定轉譯規則和進行轉譯操作)
注:sep=''換行後第二行第一個字符前不出現空格。
h = '天王蓋地虎,寶塔鎮河妖'
m = str.maketrans('寶塔鎮河妖','小雞燉蘑菇')
v = h.translate(m)
print(h,'\n',v,sep='')
# 返回:
天王蓋地虎,寶塔鎮河妖
天王蓋地虎,小雞燉蘑菇

(27)splitlines方法(通過換行符分割) 
注:True保留換行符,False不保留。sep=''換行後第二行第一個字符前不出現空格。
h = 'qwer\nasdf\nzxcv\n'
v1 = h.splitlines(True)
v2 = h.splitlines(False)
print(v1,'\n',v2,sep='')
# 返回:
['qwer\n', 'asdf\n', 'zxcv\n']
['qwer', 'asdf', 'zxcv'] 

(28)swapcase方法(大寫轉換爲小寫,小寫轉換爲大寫)
h = 'TanHang'
v = h.swapcase()
print(v)
# 返回:tANhANG 

(29)isidentifier方法(判斷字符串是否可爲合法的標識符)
h = '_aaq'
v = h.isidentifier()
print(v)
# 返回:True 

(30)len方法(顯示字符串的長度)
v = len('asdasdasd')
print(v)
# 返回:9

(31)range方法(返回一個可迭代的對象)
注:range(0,100,1)起始值, 結束值,步長。
a = range(0,10,1)
print(a)
for v in a:
    print(v)
# 返回:
range(0, 10)
0
1
2
3
4
5
6
7
8
9

(32)字符串的格式化
h1 = 'i am %s,my job is %s.'%('th','teacher')                             
#打印字符串

h2 = 'percent %.2f'% 99.66                                                
#打印浮點數

h3 = 'i am %(name)s age %(age)d'%{'name':'th','age':20}                   
#字典

h4 = "i am %(pp).2f %%" % {"pp": 88.99, }                                 
#百分數

txt = 'i am \033[42;1m%(name)s\033[0m'%{'name':'th',}            
#改顏色:\033[42;1m%(name)s\033[0m                                         
#將'th'改成綠色   

print('root','密碼','QQ',sep=':')                                          
#用':'分隔

h5 = 'i want to {2},time {1}, people {0}'.format(3,'today','eat')          
#format格式化

h6 = 'i want to {thing},time {time}, people {number}'.format(thing = 'eat',time = 'today', number = 3)                                                       
#format格式化

h7 = 'i want to {thing},time {time}, people {number}'.format(**{'thing': 'eat', 'time': 'today', 'number': 3})                                                     
#用字典表示

h8 = 'i want to {:s},time {:s}, people {:d}'.format(*['eat', 'today', 3])  
#用列表表示

(33)字符串編碼
str1 = 'hello馬雲'
print(str1.encode('utf-8'))   #默認utf-8編碼
data = str1.encode('utf-8')
print(data.decode('gbk',ignore))   #默認utf-8編碼,ignore忽視錯誤
# 返回:
b'hello\xe9\xa9\xac\xe4\xba\x91'
hello椹浜

2. 列表

定義:

存儲多個元素,元素可以是任何類型的。

列表方法:

(1)append方法(追加)
li = [1,2,3,'4','5']
li.append('th')
print(li)
# 返回:[1, 2, 3, '4', '5', 'th']

​
(2)clear方法(清空列表)
li = [1,2,3,'4','5']
li.clear()
print(li)
# 返回:[]


(3)copy方法(拷貝)
li = [1,2,3,'4','5']
v = li.copy()
print(v)
# 返回:[1, 2, 3, '4', '5']


(4)count方法(計算元素出現的次數)
li = [1,2,33,33,'4','5']
v = li.count(33)
print(v)
# 返回:2


(5)extend方法(擴展原列表)
注:參數是可迭代對象。
li = [11, 22, 33, 22, 44]
li.extend(['abc',123])
print(li)
li.extend("hello")
print(li)
# 返回:
[11, 22, 33, 22, 44, 'abc', 123]
[11, 22, 33, 22, 44, 'abc', 123, 'h', 'e', 'l', 'l', 'o']


(6)index方法(根據值獲取當前值索引位置)
注:從左至右
li = [11, 22, 33, 22, 44]
v1 = li.index(22)
v2 = li.index(22, 2, 4)
print(v1, v2)
# 返回:1 3


(7)insert方法(在指定索引位置插入元素)
li = [11, 22, 33, 22, 44]
li.insert(3,31)
print(li)
# 返回:[11, 22, 33, 31, 22, 44]


(8)pop方法(刪除某個值,並獲取刪除的值)
注:默認刪除最後一個。
li = [11, 22, 33, 22, 44]
v = li.pop(1)
print(v,'\n',li,sep='')
# 返回:
22
[11, 33, 22, 44]


(9)remove方法(刪除列表中的指定值,左邊優先)
li = [11, 22, 33, 22, 44]
li.remove(22)
print(li)
# 返回:[11, 33, 22, 44]

​
​(10)reverse方法(將當前列表翻轉)
li = [11, 22, 33, 22, 44]
li.reverse()
print(li)
# 返回:[44, 22, 33, 22, 11]


(11)sort方法(列表排序)
li = [11, 22, 33, 22, 44]
li.sort()
print(li)
# 返回:[11, 22, 22, 33, 44]


(12)in操作(判斷元素是否在列表中)​
li = [1, 12, 9, "age", ["劉漂亮", ["19", 10], "龐麥郎"], "alex", True]
v1 = "劉漂亮" in li
v2 = 'age' in li
print(v1,v2)
# 返回:False True


(13)從列表中取元素​
li = [1, 12, 9, "age", ["劉漂亮", ["19", 10], "龐麥郎"], "alex", True]
v = li[4][1][0]
print(v)
# 返回:19


(14)del(刪除列表裏的元素)​
li = ['12','zg','gy','th',3]
del li[0:2]
print(li)
# 返回:['gy', 'th', 3]


(15)zip(用於將可迭代的對象作爲參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同)
print(list(zip(['牛','西蘭花','香蕉'],['動物','蔬菜','水果'])))
print(list(zip(['牛','西蘭花','香蕉','奶茶'],['動物','蔬菜','水果'])))
print(list(zip(['牛','西蘭花','香蕉'],['動物','蔬菜','水果','飲料'])))
# 返回:
[('牛', '動物'), ('西蘭花', '蔬菜'), ('香蕉', '水果')]
[('牛', '動物'), ('西蘭花', '蔬菜'), ('香蕉', '水果')]
[('牛', '動物'), ('西蘭花', '蔬菜'), ('香蕉', '水果')]

3. 元組

定義:

tuple1 = (1,)
tuple2 = (1,2,3)

什麼時候使用元組存儲一組數據?

當那組數據不允許被修改時!

元組方法: 

(1)將元組轉換爲字符串​
tu = (3333,8888,6666,['bc'],'q')
s = ''
for i in tu:
    s += str(i)
print(s)
# 返回:333388886666['bc']q


(2)count方法(計算元素出現的次數)​
tu = (3333,8888,6666,['bc'],'q')
v = tu.count(3333)
print(v)
# 返回:1


(3)index方法(索引)​
tu = (333,888,666,['bc'],'q')
v = tu.index(666)
print(v)
# 返回:2


(4)元組的一級元素不支持修改、添加、刪除操作​
tu = (333, 888, 666, [('bc', 123), 3], 'q')
tu[3][0][1] = 12
print(tu)
# 返回:TypeError: 'tuple' object does not support item assignment

tu = (333, 888, 666, [('bc', 123), 3], 'q')
tu[3][1] = 12
print(tu)
# 返回:(333, 888, 666, [('bc', 123), 12], 'q')

4. 字典

特點:

(1)存儲的數據是一對一對的

(2)必須通過鍵得到值(key,value)

(3)鍵是唯一的,不能重複

格式:

字典名 = {key 1:value 1,key 2:value 2,……,key n:value n}

增刪改查:

增:字典名[新的key] = 值

刪:字典名.pop(已經存在的key)

刪除最後一個鍵值對:字典名.popitem()

清空鍵值對:字典名.clear()

改:字典名[已經存在的key] = 新的值

查:字典名.[已經存在的key],字典名.[key]

遍歷字典:

# 方式一
dict = {'name':'張三',
         'age':18,
         'id':1}
key_list = dict.keys()
for key in key_list:
    value = dict.get(key)
    print(f"{key}={value}")

# 方式二
dict = {'name':'張三',
         'age':18,
         'id':1}
item_list = dict.items()
for key,value in item_list:
    print(f"{key}={value}")

名片管理案例: 

# 創建
card_list = []
while True:
    ctrl = input("是否開始添加:")
    if ctrl == "yes":
        card = {
            "company": "",
            "name": "",
            "tel": ""
        }
        company = input("公司:")
        name = input("姓名:")
        tel = input("電話:")
        for i in card:
            card["company"]=company
            card["name"]=name
            card["tel"]=tel
        card_list.append(card)
        print(card_list)
    else:
        break


# 顯示
card_list  = [{'company': '阿里巴巴', 'name': '馬雲', 'tel': '18888888888'}, {'company': '深信服', 'name': '何朝曦', 'tel': '16666666666'}]
for i in card_list:
    company = i.get("company")
    name = i.get("name")
    tel = i.get("tel")
    print("-"*20)
    print("公司:" + company + "\n" + "姓名:" + name + "\n" + "電話:" + tel)
    print("-"*20)

字典方法:

(1)for循環
注:info.keys生成 key,info.values生成 value,info.items生成鍵值對。​
info = {
    "k1": 18,
    "k2": True,
    "k3": [
        11,
        [],
        (),
        22,
        33,
        {
            'kk1': 'vv1',
            'kk2': 'vv2',
            'kk3': (11,22),
        }
    ],
    "k4": (11,22,33,44)
}
for item1 in info.keys():
    print(item1)
print('\n')
for item2 in info.values():
    print(item2)
print('\n')
for item3 in info.items():
    print(item3)

# 返回:
k2
k1
k4
k3

True
18
(11, 22, 33, 44)
[11, [], (), 22, 33, {'kk3': (11, 22), 'kk1': 'vv1', 'kk2': 'vv2'}]

('k2', True)
('k1', 18)
('k4', (11, 22, 33, 44))
('k3', [11, [], (), 22, 33, {'kk3': (11, 22), 'kk1': 'vv1', 'kk2': 'vv2'}])

​
(2)fromkeys方法(根據序列創建字典,並指定統一的 value)​
v = dict.fromkeys(['th',123],999)
print(v)
# 返回:{123: 999, 'th': 999}

​
(3)get方法(根據 key獲取值,若 key不存在,獲取到指定的值,默認爲 None)​
info = {
    "k1": 18,
    "k2": True,
    "k3": [
        11,
        [],
        (),
        22,
        33,
        {
            'kk1': 'vv1',
            'kk2': 'vv2',
            'kk3': (11, 22),
        }
    ],
    "k4": (11, 22, 33, 44)
}
v1 = info.get('k33333', 3)
v2 = info.get('k3', 333333)
print(v1, '\n', v2)
# 返回:
3 
 [11, [], (), 22, 33, {'kk3': (11, 22), 'kk1': 'vv1', 'kk2': 'vv2'}]


(4)pop和popitem方法(刪除並獲取值)
注:popitem隨機刪除一個鍵值對。​
dic = {
    'k1': 13,
    'k2': 45,
    'j3': 66
}
v1 = dic.pop('k1')
print(dic, v1)
k2, v2 = dic.popitem()
print(dic, k2, v2)
# 返回:
{'k2': 45, 'j3': 66} 13
{'j3': 66} k2 45


(5)setdefault方法(設置值)
注:若 key已存在,則不設置 value,獲取原來的 value;若 key不存在,則添加新設置的鍵值對,獲取新的 value。 ​
dic1 = {
    'k1': 13,
    'k2': 45,
    'k3': 66
}
dic2 = {
    'k1': 13,
    'k2': 45,
    'k3': 66
}
v1 = dic1.setdefault('k1', 123)
v2 = dic2.setdefault('j3', 33)
print(dic1, v1)
print(dic2, v2)
# 返回:
{'k2': 45, 'k1': 13, 'k3': 66} 13
{'j3': 33, 'k2': 45, 'k1': 13, 'k3': 66} 33


(6)update方法(更新值) 
注:原字典沒有的值將添加進去。​
dic1 = {
    'k1': 13,
    'k2': 45,
    'k3': 66
}
dic2 = {
    'k1': 33,
    'k2': 45,
    'k3': 66
}
dic1.update({'k1':33,'k2':'88'})
dic2.update(k1 = 44, k2 = 55, k4 =99)
print(dic1,'\n',dic2, sep='')
# 返回:
{'k1': 33, 'k3': 66, 'k2': '88'}
{'k4': 99, 'k1': 44, 'k3': 66, 'k2': 55}

字典的簡單應用:

1. 簡單查看字典內容
# (1)能夠查看字典內的所有條目;
# (2)添加新的條目到字典中;
# (3)輸入"b"返回到上一級條目,輸入"q"結束程序。
db = {
    '北京':{
        '昌平':{},
        '朝陽':{},
        '海淀':{}
    },
    '上海':{},
    '廣州':{},
}
path = []
temp = db
while True:
    for item in path:
        temp = temp[item]
    print('可查看的條目:',list(temp.keys()))
    u1 = input('1:查看節點;2:添加節點''\n''請用戶輸入選項:')
    if u1 == '1':
        u2 = input('請輸入查看的條目:')
        path.append(u2)
    elif u1 == '2':
        u3 = input('請輸入添加的條目:')
        temp[u3] = {}
    elif u1.lower() == 'b':
        if path:
            path.pop()
    elif u1.lower() == 'q':
        break


2. 三級菜單
# (1)運行程序輸出第一級菜單;
# (2)選擇一級菜單某項,輸出二級菜單,同理輸出三級菜單;
# (3)讓用戶選擇是否要返回上一級和退出。
dic = {            #創建字典
    'NBA':
        {'湖人隊':
            ['詹姆斯','隆多','鮑爾','英格拉姆','庫茲馬'],
         '勇士隊':
            ['庫裏','杜蘭特','湯普森','格林','考辛斯'],
         '凱爾特人隊':
            ['霍福德','斯馬特','塔圖姆','歐文','海沃德']},
    'CBA':
        {'遼寧隊':
            ['郭艾倫','韓德君','賀天舉','趙繼偉','李曉旭'],
         '廣東隊':
            ['易建聯','周鵬','趙睿','胡明軒','任駿飛'],
         '新疆隊':
            ['李根','阿不都沙拉木','可蘭白克','俞長棟','王子瑞']}
}
li = []            #創建空字符串用來接收字典一級元素的key
go = True            #死循環變量
while go:
    for i,v in enumerate(dic,1):                       
        print(i,v)
        li.append(v)            #將for循環輸出的key輪流添加到列表li中
    u1 = input('請選擇聯賽:')
    if u1.isdigit():            
        u1 = int(u1)
        li1 = []            #創建空字符串用來接收字典二級元素的key
        while go:
            for i,v in enumerate(dic[li[u1-1]],1):
                print(i,v)
                li1.append(v)         #將for循環輸出的key輪流添加到列表li1中
            u2 = input('請選擇球隊:')            
            if u2 == 'b':            #判斷用戶輸入的是否是返回命令
                break
            else:            
                u2 = int(u2)
            while go:
                for v1 in dic[li[u1-1]][li1[u2-1]]:
                    print(v1)
                u3 = input('>>>')            
                u3 = str(u3)
                if u3 == 'b':             #判斷用戶輸入的是否是返回命令
                    break
                elif u3 == 'q':             #判斷用戶輸入的是否是退出命令
                    go = False
    elif u1.isalpha():
        u1 = u1.lower()
        if u1 == 'i':
            lx = input('聯賽:')
            if dic.get(lx) == None:            #判斷添加的內容是否存在
                dic[lx] = {}            #不存在則添加新的字典
            zl = input('球隊:')
            if dic[lx].get(zl) == None:            #判斷添加的內容是否存在
                dic[lx][zl] = []            #不存在則添加新的列表
            while True:
                mc = input('球員:')
                if mc in dic[lx][zl]:
                    print('已存在')
                elif mc == 'q':
                    li.clear()            #清空列表內容
                    break
                else:
                    dic[lx][zl].append(mc)

運算符:

運算符 Python 表達式 結果 描述 支持的數據類型
+ [1, 2] + [3, 4] [1, 2] + [3, 4] 合併 字符串、列表、元組
* ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 複製 字符串、列表、元組
in 3 in (1, 2, 3) True 元素是否存在 字符串、列表、元組、字典(判斷 KEY 是否在字典中)
not in 4 not in (1, 2, 3) True 元素是否不存在 字符串、列表、元組、字典(判斷 KEY 是否不在字典中)

5. 集合

集合方法:

(1)add方法(添加)​
s = {1,3,6,8}
s.add(9)
print(s)
# 返回:{1, 3, 6, 8, 9}


(2)clear方法(清空)​
s = {1,3,6,8}
s.clear()
print(s)
# 返回:set()


(3)copy方法(複製)​
s = {1,3,6,8}
s1 = s.copy()
print(s1)
# 返回:{8, 1, 3, 6}


(4)pop方法(隨機刪除) ​
s = {'th',1,3,6,8,'a','b','c'}
s.pop()
print(s)
# 返回:{3, 'th', 6, 8, 'c', 'b', 'a'}


(5)remove方法(指定刪除,元素不存在會報錯)​
s = {'th',1,3,6,8,'a','b','c'}
s.remove('th')
print(s)
# 返回:{1, 3, 'a', 6, 8, 'b', 'c'}

​
(6)discard方法(指定刪除,元素不存在不會報錯)​
s = {'a','b','c','d','e',1,2,3}
s.discard('a')
print(s)
# 返回:{1, 2, 3, 'd', 'b', 'c', 'e'}


(7)交集(intersection或"&")​
s1 = {'th',333,666}
s2 = {'th',666}
print(s1.intersection(s2))
print(s1&s2)
# 返回:{'th', 666}


(8)並集(union或"|")​
s1 = {'th',333,666}
s2 = {'th',666}
print(s1.intersection(s2))
print(s1&s2)
# 返回:{'th', 666}


(10)交叉補集(symmetric_difference或"^")​
s1 = {'th',333,666}
s2 = {'th',666,999}
print(s1.symmetric_difference(s2))
print(s1^s2)
# 返回:{999, 333}

​
(11)求差集之後更新(difference_update)​
s1 = {'th',333,666}
s2 = {'th',666,999}
s1.difference_update(s2)
print(s1)
# 返回:{333}


(12)更新集合(update) ​
s1 = {'th',333,666}
s2 = {'th',666,999}
s1.update(s2)
print(s1)
# 返回:{'th', 999, 666, 333}

s = {'th',333,666}
s.update([999])
print(s)
# 返回:{666, 999, 333, 'th'}


(13)判斷兩個集合中是否有相同的元素(isdisjoint) 
注:無則返回True,有則返回False。​
s1 = {'th',333,666}
s2 = {1}
print(s1.isdisjoint(s2))
# 返回:True


(14)判斷兩個集合的子集或父集關係(issubset) ​
s1 = {'th',333,666}
s2 = {'th'}
print(s2.issubset(s1))
# 返回:True

s1 = {'th',333,666}
s2 = {'th'}
print(s1.issuperset(s2))
# 返回:True


(15)凍結集合(frozenset)
注:不可變集合。
s = frozenset('hello')
print(s)
# 返回:frozenset({'l', 'o', 'h', 'e'})


(16)update方法
注:插入整個list、tuple、字符串,打碎插入
s = set([1,2,3,4,5])
s.update('hello')
print(s)
# 返回:{1, 2, 3, 4, 5, 'h', 'o', 'l', 'e'}

 

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