# Python -07 組合數(shù)據(jù)類型

集合類型

集合是多個(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文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 來,多角度認(rèn)識(shí)我吧 吐舌頭的我是不是很萌 偶爾玩玩派也不錯(cuò) 到哪我都能找到感興趣的書來看 讀書我也一樣可以很認(rèn)真 ...
    湯媚閱讀 171評論 0 0
  • 自拍在現(xiàn)如今的狀況,簡直是人類社會(huì)的一個(gè)壯舉呀,因?yàn)槲铱催^朋友圈里一個(gè)砸破了頭的朋友曬自拍,一個(gè)切菜切到手的朋友,...
    莎菲日記閱讀 873評論 0 1
  • 搭建HDFSHDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)...
    xdlkc閱讀 1,578評論 0 3

友情鏈接更多精彩內(nèi)容