itertools.product。
創(chuàng)新互聯(lián)建站專注于新源網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供新源營(yíng)銷型網(wǎng)站建設(shè),新源網(wǎng)站制作、新源網(wǎng)頁(yè)設(shè)計(jì)、新源網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造新源網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新源網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
r語(yǔ)言combn函數(shù)是一種排列組合的函數(shù),python中排列組合的函數(shù)是itertools.product(sequence,repeat)。
有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?具體有哪些數(shù)字
方法一:for循環(huán)+集合去重復(fù)項(xiàng)
方法二:內(nèi)置函數(shù)itertools
排列組合迭代器:
itertools.product p,q…[repeat=l]笛卡爾積,相當(dāng)于嵌套的for
itertools.permutation p[,r]長(zhǎng)度為r元組,所有可能得排列,無(wú)重復(fù)元素
itertools.combination p,r 長(zhǎng)度r元組,有序,無(wú)重復(fù)元素
itertools.combinaton_with_replacement p,r 長(zhǎng)度人員組,有序,元素可重復(fù)
舉例
模塊其他函數(shù):
遍歷一個(gè)序列中元素的所有可能的排列或組合。
itertools 模塊提供了三個(gè)函數(shù)來(lái)解決這類問題。 其中一個(gè)是 itertools.permutations() , 它接受一個(gè)序列并產(chǎn)生一個(gè)元組序列,每個(gè)元組由序列中所有元素的一個(gè)可能排列組成,即通過打亂序列中元素排列順序生成一個(gè)元組,比如:
如果想得到指定長(zhǎng)度的所有排列,你可以傳遞一個(gè)可選的長(zhǎng)度參數(shù)。比如:
使用 itertools.combinations() 可得到輸入序列中元素的所有的組合。比如:
對(duì)于 combinations() 來(lái)講,元素的順序已經(jīng)不重要了,即組合 ('a', 'b') 與 ('b', 'a') 其實(shí)是一樣的,最終只會(huì)輸出其中一個(gè)。
在計(jì)算組合的時(shí)候,一旦元素被選取就會(huì)從候選中剔除掉(比如如果元素’a’已經(jīng)被選取了,那么接下來(lái)就不會(huì)再考慮它了)。 而函數(shù) itertools.combinations_with_replacement() 允許同一個(gè)元素被選擇多次,比如:
盡管手動(dòng)可以實(shí)現(xiàn)排列組合算法,但是這樣做比較麻煩,當(dāng)遇到有些復(fù)雜的迭代問題時(shí),可以先去看看itertools模塊是否能實(shí)現(xiàn),很有可能會(huì)在里面找到解決方案!
1.集合類型概述
Python語(yǔ)言中的集合類型與數(shù)學(xué)中的集合概念一致,即包含0個(gè)或多個(gè)數(shù)據(jù)項(xiàng)的無(wú)序組合。
集合是無(wú)序組合,用大括號(hào){}表示,它沒有索引和位置的概念,集合中元素可以動(dòng)態(tài)增加或刪除。
由于集合元素獨(dú)一無(wú)二,使用集合類型能夠過濾掉重復(fù)元素。
集合類型有4個(gè)操作符,交集、并集|、差集-、補(bǔ)集^,操作邏輯與數(shù)學(xué)定義相同
集合類型有一些常用的操作函數(shù)或方法
set()函數(shù)將其他的組合數(shù)據(jù)類型變成集合類型,返回結(jié)果是一個(gè)無(wú)重復(fù)且排序任意的集合。set()函數(shù)也可以生成空集合變量。
列表類型用中括號(hào)[]表示,也可以通過list(x)函數(shù)將集合或字符串類型轉(zhuǎn)換成列表類型。
列表屬于序列類型,所以列表類型支持序列類型對(duì)應(yīng)的操作
1.序列類型有一些通用的操作符和函數(shù)
2.列表的索引
索引是列表的基本操作,用于獲得列表的一個(gè)元素。使用中括號(hào)作為索引操作符。
可以使用遍歷循環(huán)對(duì)列表類型的元素進(jìn)行遍歷操作,
基本使用方式如下
3.列表的切片
切片是列表的基本操作,用于獲得列表的一個(gè)片段,即獲得一個(gè)或多個(gè)元素。切片后的結(jié)果也是列表類型。
切片的使用方式:
切片獲取列表類型從N到M(不包含M)的元素組成新的列表。當(dāng)K存在時(shí),切片獲取列表類型從N到M(不包含M)以K為步長(zhǎng)所對(duì)應(yīng)元素組成的列表。
1.列表的操作方法
ls.append(x)僅用于在列表中增加一個(gè)元素,如果希望增加多個(gè)元素,可以使用加號(hào)+,將兩個(gè)列表合并。
可以使用Python保留字del對(duì)列表元素或片段進(jìn)行刪除。
如下:
或
使用索引配合等號(hào)(=)可以對(duì)列表元素進(jìn)行修改。
補(bǔ):元組
Python的元組與列表類似,不同之處在于元組的元素不能修改。
元組使用小括號(hào)(),列表使用方括號(hào)。
元組創(chuàng)建很簡(jiǎn)單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開即可。
Python語(yǔ)言中的字典使用大括號(hào){}建立,每個(gè)元素是一個(gè)鍵值對(duì)。
使用方式:
鍵和值通過冒號(hào)連接,不同鍵值對(duì)通過逗號(hào)隔開。大括號(hào)可以表示集合,字典類型也具有和集合類似的性質(zhì),即鍵值對(duì)之間沒有順序且不能重復(fù)。
?字典的索引
列表類型采用元素順序的位置進(jìn)行索引。由于字典元素“鍵值對(duì)”中鍵是值的索引,因此,可以直接利用鍵值對(duì)關(guān)系索引元素。
利用索引和賦值 = 配合,可以對(duì)字典中每個(gè)元素進(jìn)行修改。
使用大括號(hào)可以創(chuàng)建字典。通過索引和賦值配合,可以向字典中增加元素。
字典類型有一些通用的操作函數(shù)
字典類型存在一些操作方法
d.keys()返回字典中的所有鍵信息,返回結(jié)果是Python的一種內(nèi)部數(shù)據(jù)類型dict_keys,專用于表示字典的鍵。如果希望更好的使用返回結(jié)果,可以將其轉(zhuǎn)換為列表類型。
d.values()返回字典中的所有值信息,返回結(jié)果是Python的一種內(nèi)部數(shù)據(jù)類型dict_values。如果希望更好的使用返回結(jié)果,可以將其轉(zhuǎn)換為列表類型。
d.items()返回字典中的所有鍵值對(duì)信息,返回結(jié)果是Python的一種內(nèi)部數(shù)據(jù)類型dict_items。
d.get(key, default)根據(jù)鍵信息查找并返回值信息,如果key存在則返回相應(yīng)值,否則返回默認(rèn)值,第二個(gè)元素default可以省略,如果省略則默認(rèn)值為空。
d.pop(key, default)根據(jù)鍵信息查找并取出值信息,如果key存在則返回相應(yīng)值,否則返回默認(rèn)值,第二個(gè)元素default可以省略,如果省略則默認(rèn)值為空。相比d.get()方法,d.pop()在取出相應(yīng)值后,將從字典中刪除對(duì)應(yīng)的鍵值對(duì)。
d.popitem()隨機(jī)從字典中取出一個(gè)鍵值對(duì),以元組(key,value)形式返回。取出后從字典中刪除這個(gè)鍵值對(duì)。
d.clear()刪除字典中所有鍵值對(duì)。
此外,如果希望刪除字典中某一個(gè)元素, 可以使用Python保留字del。
字典類型也支持保留字in,用來(lái)判斷一個(gè)鍵是否在字典中。如果在則返回True,否則返回False。
字典可以遍歷循環(huán)對(duì)其元素進(jìn)行遍歷
for循環(huán)返回的變量名是字典的索引值。如果需要獲得鍵對(duì)應(yīng)的值,可以在語(yǔ)句塊中通過get()方法獲得。
定義:集合是多個(gè)元素的無(wú)序組合
特點(diǎn):集合類型與數(shù)學(xué)中的集合概念一致,幾何元素之間無(wú)序、每個(gè)元素唯一、不存在相同元素,幾何元素不可更待、不能存在可變數(shù)據(jù)類型。
非可變數(shù)據(jù)類型:整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù)、字符串類型、元組類型等
表示:{},元素間用,分隔
建立:{} 或者set{},建立空集合必須使用set{}
舉例:
基本操作符:
增強(qiáng)操作符:
實(shí)例:
A-B
{123}
B-A
{'3','1','2'}
AB
{'p','y'}
A|B
{'1','p','2','y','3',123}
A^B
{'2',123,'3','1'}
p123y
A
set()
1.包含關(guān)系比較:
True
False
2.數(shù)據(jù)去重
{'p','y',123}
['p','y',123]
定義:序列是具有先后關(guān)系的一組元素
特點(diǎn):序列是一維元素向量,元素類型可以不同,元素可以相同:類似數(shù)學(xué)元素序列:元素間有序列引導(dǎo),通過下標(biāo)訪問序列的特定元素
序列是一個(gè)基類類型,衍生為:字符串類型、元組類型、列表類型
序號(hào)的定義:正向遞增序號(hào)、反向遞減序號(hào),與字符串中相似。
['.io',123,'python']
'oi.321nohtyp'
序列類型的通用函數(shù)和方法:
3
'y'
定義:元組類型是序列類型的一種擴(kuò)展,一旦創(chuàng)建就不能修改
形式:元組使用()或者tuple()創(chuàng)建,元素之間用逗號(hào)分隔:小括號(hào)使不使用都可以。
舉例:
('cat','dog','tiger','human')
(4352,'bule',('cat','dog','tiger','human'))
元組類型繼承序列類型全部通用操作:操作符、處理函數(shù)、處理方法
元組類型創(chuàng)建后不能修改,因此沒有特殊操作
('human','tiger',dog','cat')
'tiger'
定義:列表是序列類型的一種擴(kuò)展,創(chuàng)建后其中的元素可以被隨意修改
使用:[]或者list()創(chuàng)建,元素間可以用逗號(hào)隔開,列表中各元素類型可不同,無(wú)長(zhǎng)度限制
['cat','dog','tiger',1024]
['cat','dog','tiger',1024]
列表類型操作函數(shù)及其方法:
['cat',1,2,3,4,'tiger',1024]
修改列表:
練習(xí):
序列:元組和列表兩種重要類型
應(yīng)用場(chǎng)景:元組用于元素不改變的場(chǎng)景,更多用于固定搭配場(chǎng)景:列表更加靈活,它是最常用的序列類型
作用:表達(dá)一組有序數(shù)據(jù)并且處理問題;數(shù)據(jù)保護(hù)
元素遍歷:
元組類型:
數(shù)據(jù)保護(hù):不希望數(shù)據(jù)被程序所改變,轉(zhuǎn)換成元組類型
('cat',1,2,3,4,'tiger',1024)
基本統(tǒng)計(jì)值需求:給出一組數(shù)并且理解
定義:總個(gè)數(shù)、求和、平均值、方差、中位數(shù)...
總個(gè)數(shù):len()
求和:for...in
平均值:求和/總個(gè)數(shù)
方差:各數(shù)據(jù)與平均數(shù)差的平方的和的平均數(shù)
中位數(shù):排序,然后... 奇數(shù)找中間一個(gè),偶數(shù)中間兩個(gè)的平均
映射:是一種索引和數(shù)據(jù)的對(duì)應(yīng)關(guān)系,也是鍵和值的對(duì)應(yīng)關(guān)系。
映射類型:由用戶數(shù)據(jù)為定義索引
字典類型:數(shù)據(jù)的組織與表達(dá)的一種新的形態(tài),是映射的體現(xiàn)。
鍵值對(duì):鍵是數(shù)據(jù)索引的擴(kuò)展,字典是鍵值對(duì)的集合,鍵值對(duì)間無(wú)序。
生成:{}和dict()創(chuàng)建,鍵值對(duì)之間用冒號(hào):表示
舉例:{鍵1:值1,鍵2:值2,...,鍵n:值n}
在字典變量中,通過鍵獲得值:
字典變量={鍵1:值1,...,鍵n:值n}
值=字典變量[鍵]
字典變量[鍵]=值
用[]來(lái)向字典中增加或者索引鍵值對(duì)
舉例:
'北京'
生成空字典:
de={};type(de)
class 'dict'
type(x) 返回變量x的類型
舉例:
True
dict_keys(['中國(guó)','美國(guó)','法國(guó)])
dict_values(['北京','華盛頓','巴黎'])
實(shí)例:
'北京'
'伊斯蘭堡'
('中國(guó)','北京')
練習(xí):
1.映射的表達(dá):映射無(wú)處不在,鍵值對(duì)也無(wú)處不在,統(tǒng)計(jì)數(shù)據(jù)出現(xiàn)的次數(shù),數(shù)據(jù)是鍵,次數(shù)是值。
字典的主要作用:表達(dá)鍵值對(duì)的數(shù)據(jù)進(jìn)而操作他們
2.元素遍歷:
for k in d:
語(yǔ)句塊
定義:jieba庫(kù)是優(yōu)秀的第三方中文分詞庫(kù),需要額外安裝
安裝方法:(cmd命令下)pip install jieba
作用:利用中文詞庫(kù)確定漢字間的關(guān)聯(lián)概率,字間概率大的組成詞組,形成分詞效果,用戶還可以向其中自定義的添加詞組。
分類:精確模式、全模式、搜索引擎模式
精確模式:將詞組精確的分開,不存在冗余單詞
全模式:將所有可能的詞組都掃描出來(lái),有冗余
搜索引擎模式:在精確模式的基礎(chǔ)上,將長(zhǎng)詞再次切分
舉例:
['中國(guó)','是','一個(gè)','偉大','的','國(guó)家']
['中國(guó)','國(guó)是','一個(gè)','偉大','的','國(guó)家']
['中華','華人','人民','共和','共和國(guó)','中華人民共和國(guó)','是','偉大','的']
需求:一篇文章中出現(xiàn)的詞的頻率統(tǒng)計(jì)
分類:英文文本,中文文本
舉例:
英文:哈姆雷特(hamlet)
中文:三國(guó)演義(threekingdoms)