集合類型
集合是多個(gè)元素的無序組合
集合類型與數(shù)學(xué)中的集合概念一致
集合元素之間無序,每個(gè)元素唯一,不存在相同元素
# 集合用大括號(hào){}表示,元素間用逗號(hào)分隔
# 建立集合類型用{}或set()
# 建立空集合類型,必須使用set()
A = {"1", "123", ("3", "8")}
B = set("pypy123")
>>> {"p", "y", "1", "2", "3"}
- 集合操作符
S|T 并 返回一個(gè)新的集合 包括在集合S和T中的所有元素
S-T 差 返回一個(gè)新的集合 包括在集合S但不在T中的元素
s&T 交 返回一個(gè)新的集合 包括同時(shí)在集合S和T中的元素
S^T 補(bǔ) 返回一個(gè)新的集合 包括集合S和T中的非相同元素
# 4個(gè)增強(qiáng)操作符
S |= T 更新集合S 包括在集合S和T中的所有元素
S -= T 更新集合S 包括在集合S但不在T中的元素
S &= T 更新集合S 包括同時(shí)在集合S和T中的元素
S ^= T 更新集合S 包括集合S和T中的非相同元素
- 集合處理方法
S.add(x) 如果x不在集合S中,將x增加到S
S.discard(x) 移除S中元素x,如果x不在集合S中,不報(bào)錯(cuò)
S.remove(x) 移除S中元素x,如果x不在集合S中,產(chǎn)生KeyError異常
S.clear() 移除S中所有元素
S.pop() 隨機(jī)返回S的一個(gè)元素,更新S,若S為空產(chǎn)生KeyError異常
S.copy() 返回集合S的一個(gè)副本
len(S) 返回集合S的元素個(gè)數(shù)
X in S 判斷S中元素x, x在集合S中,返回
True,否則返回False
set(x) 將其他 類型變量x轉(zhuǎn)變?yōu)榧项愋?
- 應(yīng)用場景
- 包含關(guān)系比較
- 數(shù)據(jù)去重
序列類型
序列是具有先后關(guān)系的一組元素
序列是一個(gè)基類類型
# 序列是一維向量,元素類型可以不同
# 類似數(shù)學(xué)元素序列:S0, S1, ..., Sn-1
# 元素間由序號(hào)引導(dǎo),通過下標(biāo)訪問序列的特定元素
- 序列類型及操作
x in s 如果x是序列s的元素,返回True,否則返回False
x not in s 如果x是序列s的元素,返回False,否則返回True
s + t 連接兩個(gè)序列s和t
s * n 或 n * s 將序列s復(fù)制n次
s[i] 索引,返回s中的第i個(gè)元素,i是序列的序號(hào)
s[i:j] 或 s[i:j:k] 切片,返回序列s中第i到j(luò)以k為步長的元素子序列
- 序列類型通用函數(shù)和方法
len(s) # 返回序列s的長度
min(s) # 返回序列s的最小元素,s中元素需要可比較
max(s) # 返回序列s的最大元素,s中元素需要可比較
s.index(x) 或 s.index(x,i,j) # 返回序列s從i開始到j(luò)位置中第一次出現(xiàn)元素x的位置
s.count(x) # 返回序列s中出現(xiàn)x的總次數(shù)
元組
- 元組是序列類型的一種擴(kuò)展
- 元組繼承序列類型的全部通用操作
元組是一種序列類型,一旦創(chuàng)建就不能被修改
使用小括號(hào)()或tuple()創(chuàng)建,元素間用逗號(hào)分隔
可以使用或不使用小括號(hào)
元組因?yàn)閯?chuàng)建后不能修改,因此沒有特殊操作
列表
- 列表是序列類型的一種擴(kuò)展,十分常用
- 列表是一種序列類型,創(chuàng)建后可以隨意被修改
列表使用[]或list()創(chuàng)建,元素間用逗號(hào)分隔
可以使用或不使用小括號(hào)
ls = ["cat", "dog", "tiger", 1024]
ls[i] = x 替換列表ls第i元素為x
ls[i:j:k] = lt 用列表lt替換ls切片后對應(yīng)元素子列表
del ls[i] 刪除列表ls中第i元素
del ls[i:j:k] 刪除列表ls中第i到第j以k為步長的元素
ls += lt 更新列表ls, 將列表lt元素增加到列表ls中
ls *= n 更新列表ls, 其元素重復(fù)n次
序列類型應(yīng)用場景
- 元組用于元素不改變的應(yīng)用場景,更多用于固定搭配場景
- 列表更加靈活, 他是最常用的序列類型
- 最主要作用:表示一組有序數(shù)據(jù),進(jìn)而操作他們
- 元素遍歷
- 數(shù)據(jù)保護(hù),如果不希望數(shù)據(jù)被程序所改變,轉(zhuǎn)換為元組類型
字典類型
映射:映射是一種鍵(索引)和值(數(shù)據(jù))的對應(yīng)
字典類型是映射的體現(xiàn)
鍵值對:鍵是數(shù)據(jù)索引的擴(kuò)展
字典是鍵值對的集合,鍵值對之間無序
采用{}和dict()創(chuàng)建,鍵值對用冒號(hào):表示
d = {"中國":"湖南", "名字":"小七"}
-
字典類型操作函數(shù)喝方法
del d[k] 刪除字典d中鍵對應(yīng)的數(shù)據(jù)值 k in d 判斷鍵k是否在字典d中,如果在返回True,否則返回False d.keys() 返回字典d中所有的鍵信息 d.values() 返回字典d中所有的值信息 d.items() 返回字典d中所有的鍵值對信息 d.get(k, <default>) 鍵k存在,則返回相應(yīng)值,不在則返回<default>值 d.pop(k, <default>) 鍵k存在,則取出相應(yīng)值,不在則返回<default>值 d.popitem() 隨機(jī)從字典d中取出一個(gè)鍵值對,以元組形式返回 d.clear() 刪除所有鍵值對 len(d) 返回字典d中元素的個(gè)數(shù)
jieba庫
jieba庫是優(yōu)秀的中文分詞第三方庫
cmd命令行: pip install jieba
利用一個(gè)中文詞庫,確定漢字之間的關(guān)聯(lián)概率
- 精確模式
把文本精確的切分開,不存在冗余單詞
- 全模式
把文本中所有可能的詞語都掃描出來,有冗余
- 搜索引擎模式
在精確模式基礎(chǔ)上,對長詞再次切分
| 函數(shù) | 描述 |
|---|---|
| jieba.lcut(s) | 精確模式,返回一個(gè)列表類型的分詞結(jié)果 jieba.lcut(“中國是一個(gè)偉大的國家")==>[“中國”, ‘是’, “一個(gè)”, “偉大”, “的”, “國家"] |
| jieba.lcut(s,cut_all=True) | 全模式,返回一個(gè)列表類型的分詞結(jié)果,存在冗余 jieba.lcut(“中國是一個(gè)偉大的國家”, cut_all=True)==>[“中國”, “國是”, “一個(gè)”, “偉大”, “的”, “國家"] |
| jieba.lcut_for_search(s) | 搜索引擎模式,返回一個(gè)列表類型的分詞結(jié)果,存在冗余 jieba.lcut_for_search(“中華人民共和國是偉大的”)==>[“中華”, “華人”, “人民”, “共和”, “共和國”, “中華人民共和國", "是", "偉大", "的"] |
| jieba.add_word(w) | 向分詞詞典增加新詞w jieba.add_word("蟒蛇語言") |
jieba.lcut("中國是一個(gè)偉大的國家")
# [“中國”, ‘是’, “一個(gè)”, “偉大”, “的”, “國家"]
jieba.lcut("中國是一個(gè)偉大的國家", cut_all = True)
# [“中國”, “國是”, “一個(gè)”, “偉大”, “的”, “國家"]
jieba.lcut_for_search("中華人民共和國是偉大的")
# [“中華”, “華人”, “人民”, “共和”, “共和國”, “中華人民共和國", "是", "偉大", "的"]
jieba.add_word("蟒蛇語言")
# 增加新詞
文本詞頻統(tǒng)計(jì)
# 文本詞頻統(tǒng)計(jì)
import sys
def getText():
txt = open("hamlet.txt", "r").read()
# 打開文本文件,測試可以使用txt='''很長的文本內(nèi)容,英文類型的文本代替'''
# 使用PyCharm工具編譯
txt = txt.lower()
for ch in '~!@#$%^&*()_|}{><?\][;':
txt = txt.replace(ch, " ")
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse=True)
for i in range(10):
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))
Pycharm安裝:PyCharm安裝激活
運(yùn)行結(jié)果
屏幕快照 2018-06-06 18.10.23.png
PyInstaller庫
將.py源代碼轉(zhuǎn)換成無需源代碼的可執(zhí)行文件
| 參數(shù) | 描述 |
|---|---|
| -h | 查看幫助 |
| --clean | 清理打包過程中的臨時(shí)文件 |
| -D, --onedir | 默認(rèn)值,生成dist文件夾 |
| -F, --onefile | 在dist文件夾中生成獨(dú)立的打包文件 |
| -i<圖標(biāo)文件名.ico> | 指定打包程序使用的圖標(biāo)icon文件 |
