日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python排序函数set_【Python】排列组合itertools 集合set

發布時間:2025/4/5 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python排序函数set_【Python】排列组合itertools 集合set 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

■itertools

利用python的itertools可以輕松地進行排列組合運算

itertools的方法基本上都返回迭代器

比如

?itertools.combinations('abcd',2)

這個方法從序列abcd中任選兩個進行組合,返回一個迭代器,以tuple的形式輸出所有組合,如('a','b'),('a','c')....等等。總共是C24=6種組合

?itertools.permutations('abc',2)

和combinations類似,為排序,輸出的迭代器,里面內容是('a','b'),('b','a')....等等,一共是A23=6種組合

?itertools.product('abc','123')

相當于是下面這樣的代碼

for element1 inlist1:for element2 inlist2:yield element1,element2

計算多個迭代器的笛卡爾積。

?itertools.combinations_with_replacement('abc',2)

和combinations相比之差別在于可重復,即結果中會有('a','a'),('b','b')等出現

==============================================

除了以上純排列組合之外,itertools還提供很多很便利的方法

?itertools.imap()與map函數相似,但是返回迭代器

比如imap(pow,[1,2],[1,2])

//函數做參數,后跟若干個iterable對象。跟幾個取決于前面那個函數有幾個參數。而imap的操作是講多個iterable對象中的元素一一對應地進行給出的函數操作

在這個例子中,最終迭代器中的內容就是pow(1,1)=1,pow(2,2)=4,pow(3,3)=27

?itertools.compress('ABCD',[1,0,1,0])

根據后者列表中的1和0所指出的真假情況,取舍前面給出的序列中的值,返回這些值為內容的迭代器

這個例子中最后的內容就是'A'和'C'

?itertools.chain(list1,list2...)

將參數中的iterable對象按順序合并起來,返回的迭代器將按順序給出這些對象中的元素

如果list(chain(list1,list2,list3...))相當于是list1+list2+list3...把這幾個list合并起來了

?itertools.count(n)

返回一個無限的迭代器,內容是從n開始一個一個往上加的整數

?itertools.cycle(list)

返回一個無限迭代器,不斷迭代list中的所有內容

?itertools.ifilter(func,seq)

對seq中的元素一個一個依次放進func,func是個針對某個值做出判斷返回True或者False的函數。

返回的迭代器里面的內容僅為經過func判斷后為True的那些元素,和filter()類似

■set

set不是python的一個模塊,但是它是個很吊的東西,因為它支持的是集合和集合操作

set(...)是個函數,也是一種數據結構,表明某個對象已經成為了一個集合,同時set類型的數據也是iterable的

?構造集合

set(某個iterable對象) //set構造時會自動除去參數對象中重復的元素

>>> s = set([0,0,1,1,2,2])>>>sset([0,1,2])

?對集合元素的一些操作

s.add(...)   向集合中添加一項

s.update([...])   添加一個iterable對象(也可以是集合),當然已經出現在s中的元素不會再重復出現

s.remove(...)    刪除一個元素

s.discard(...)    一個元素若存在則刪除(類似字典的get方法)

x (not) in s    判斷一個集合是否含有元素

s.issubset(t) 或者 s<=t    判斷s是否是t的子集

s & t    交集

s |t    并集

s - t    差集

*對集合的處理往往是暫時的,最終可以用類似于[i for i in s]的方法將set轉化為list

總結

以上是生活随笔為你收集整理的python排序函数set_【Python】排列组合itertools 集合set的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。