python過濾器函數(shù),過濾函數(shù)是什么

ffmpeg-python中文文檔(三)——API參考

表示上游節(jié)點(diǎn)的傳出邊緣;可以用來創(chuàng)建更多的下游節(jié)點(diǎn)。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、大城ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的大城網(wǎng)站制作公司

輸入文件 URL (ffmpeg -i option)

在一個(gè) ffmpeg 命令行中包含所有給定的輸出

輸出文件地址

不詢問就覆蓋輸出文件(ffmpeg -y 選項(xiàng))

在指定文件上運(yùn)行 ffprobe 并返回輸出的 JSON 表示。

構(gòu)建用于調(diào)用 ffmpeg 的命令行。

構(gòu)建要傳遞給 ffmpeg 的命令行參數(shù)。

為提供的節(jié)點(diǎn)圖調(diào)用 ffmpeg 。

參數(shù)

為提供的節(jié)點(diǎn)圖異步調(diào)用 ffmpeg。

參數(shù)

例子

運(yùn)行和流式輸入:

運(yùn)行并捕獲輸出:

使用 numpy 逐幀處理視頻:

通過重新混合顏色通道來調(diào)整視頻輸入幀。

連接音頻和視頻流,將它們一個(gè)接一個(gè)地連接在一起。

篩選器適用于同步視頻和音頻流的片段。所有段必須具有每種類型的相同數(shù)量的流,這也是輸出時(shí)的流數(shù)。

參數(shù)

裁剪輸入視頻。

參數(shù)

在輸入圖像上繪制一個(gè)彩色框。

參數(shù)

使用 libfreetype 庫從視頻頂部的指定文件中繪制文本字符串或文本。

要啟用此過濾器的編譯,您需要使用 --enable-libfreetype . 要啟用默認(rèn)字體回退和字體選項(xiàng),您需要使用 --enable-libfontconfig . 要啟用 text_shaping 選項(xiàng),您需要使用 --enable-libfribidi

參數(shù)

· box - 用于使用背景顏色在文本周圍繪制一個(gè)框。該值必須是 1(啟用)或 0(禁用)??虻哪J(rèn)值為 0。

· boxborderw – 使用 boxcolor 設(shè)置要在框周圍繪制的邊框?qū)挾?。boxborderw 的默認(rèn)值為 0。

· boxcolor - 用于在文本周圍繪制框的顏色。有關(guān)此選項(xiàng)的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。 boxcolor 的默認(rèn)值為“white”。

· line_spacing – 使用 box 設(shè)置要在框周圍繪制的邊框的行間距(以像素為單位)。line_spacing 的默認(rèn)值為 0。

· borderw – 使用邊框顏色設(shè)置要在文本周圍繪制的邊框?qū)挾取_吙虻哪J(rèn)值為 0。

· bordercolor – 設(shè)置用于在文本周圍繪制邊框的顏色。有關(guān)此選項(xiàng)的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。邊框顏色的默認(rèn)值為“黑色”。

· 擴(kuò)展- 選擇文本的擴(kuò)展方式??梢允?none、strftime(已棄用)或 normal(默認(rèn))。有關(guān)詳細(xì)信息,請參閱下面的文本擴(kuò)展部分。

· basetime – 設(shè)置計(jì)數(shù)的開始時(shí)間。值以微秒為單位。僅適用于已棄用的 strftime 擴(kuò)展模式。要在正常擴(kuò)展模式下進(jìn)行模擬,請使用 pts 函數(shù),提供開始時(shí)間(以秒為單位)作為第二個(gè)參數(shù)。

· fix_bounds - 如果為 true,檢查并修復(fù)文本坐標(biāo)以避免剪切。

· fontcolor - 用于繪制字體的顏色。有關(guān)此選項(xiàng)的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。fontcolor 的默認(rèn)值為“黑色”。

· fontcolor_expr – 與文本相同的擴(kuò)展字符串以獲得動態(tài)字體顏色值。默認(rèn)情況下,此選項(xiàng)具有空值并且不被處理。設(shè)置此選項(xiàng)時(shí),它會覆蓋 fontcolor 選項(xiàng)。

· font - 用于繪制文本的字體系列。默認(rèn)情況下無。

· fontfile – 用于繪制文本的字體文件。必須包含路徑。如果禁用了 fontconfig 支持,則此參數(shù)是必需的。

· alpha – 繪制應(yīng)用 alpha 混合的文本。該值可以是介于 0.0 和 1.0 之間的數(shù)字。該表達(dá)式也接受相同的變量 x、y。默認(rèn)值為 1。請參閱 fontcolor_expr。

· fontsize – 用于繪制文本的字體大小。字體大小的默認(rèn)值為 16。

· text_shaping – 如果設(shè)置為 1,則在繪制文本之前嘗試對文本進(jìn)行整形(例如,反轉(zhuǎn)從右到左文本的順序并加入阿拉伯字符)。否則,只需按照給定的方式繪制文本。默認(rèn)為 1(如果支持)。

· ft_load_flags –用于加載字體的標(biāo)志。這些標(biāo)志映射了 libfreetype 支持的相應(yīng)標(biāo)志,并且是以下值的組合:

默認(rèn)值為“默認(rèn)”。有關(guān)更多信息,請參閱 FT_LOAD_* libfreetype 標(biāo)志的文檔。

· shadowcolor – 用于在已繪制文本后面繪制陰影的顏色。有關(guān)此選項(xiàng)的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。shadowcolor 的默認(rèn)值為“黑色”。

· shadowx – 文本陰影位置相對于文本位置的 x 偏移量。它可以是正值或負(fù)值。默認(rèn)值為“0”。

· shadowy – 文本陰影位置相對于文本位置的 y 偏移量。它可以是正值或負(fù)值。默認(rèn)值為“0”。

· start_number – n/frame_num 變量的起始幀號。默認(rèn)值為“0”。

· tabsize - 用于呈現(xiàn)選項(xiàng)卡的空格數(shù)大小。默認(rèn)值為 4。

· timecode – 以“hh:mm:ss[:;.]ff”格式設(shè)置初始時(shí)間碼表示。它可以帶或不帶文本參數(shù)使用。必須指定 timecode_rate 選項(xiàng)。

· rate – 設(shè)置時(shí)間碼幀率(僅限時(shí)間碼)。

· timecode_rate – 的別名rate。

· r – 的別名rate。

· tc24hmax – 如果設(shè)置為 1,時(shí)間碼選項(xiàng)的輸出將在 24 小時(shí)左右回繞。默認(rèn)值為 0(禁用)。

· text -- 要繪制的文本字符串。文本必須是 UTF-8 編碼字符序列。如果沒有使用參數(shù) textfile 指定文件,則此參數(shù)是必需的。

· textfile – 包含要繪制的文本的文本文件。文本必須是 UTF-8 編碼字符序列。如果沒有使用參數(shù) text 指定文本字符串,則此參數(shù)是必需的。如果同時(shí)指定了 text 和 textfile,則會引發(fā)錯(cuò)誤。

· reload – 如果設(shè)置為 1,文本文件將在每一幀之前重新加載。一定要自動更新它,否則它可能會被部分讀取,甚至失敗。

· x – 指定將在視頻幀內(nèi)繪制文本的偏移量的表達(dá)式。它相對于輸出圖像的左邊框。默認(rèn)值為“0”。

· y - 指定將在視頻幀內(nèi)繪制文本的偏移量的表達(dá)式。它相對于輸出圖像的上邊框。默認(rèn)值為“0”。有關(guān)接受的常量和函數(shù)的列表,請參見下文。

表達(dá)式常量:

x 和 y 的參數(shù)是包含以下常量和函數(shù)的表達(dá)式:

· dar:輸入顯示縱橫比,同 (w / h) * sar

· hsub:水平色度子樣本值。例如,對于像素格式“yuv422p”,hsub 為 2,vsub 為 1。

· vsub:垂直色度子樣本值。例如,對于像素格式“yuv422p”,hsub 為 2,vsub 為 1。

· line_h:每個(gè)文本行的高度

· lh:別名為line_h.

· main_h:輸入高度

· h: 的別名main_h。

· H: 的別名main_h。

· main_w:輸入寬度

· w: 的別名main_w。

· W: 的別名main_w。

· ascent:對于所有渲染的字形,從基線到用于放置字形輪廓點(diǎn)的最高/上網(wǎng)格坐標(biāo)的最大距離。這是一個(gè)正值,因?yàn)榫W(wǎng)格的 Y 軸向上。

· max_glyph_a: 的別名ascent。

· 下降:對于所有渲染的字形,從基線到用于放置字形輪廓點(diǎn)的最低網(wǎng)格坐標(biāo)的最大距離。由于網(wǎng)格的方向,這是一個(gè)負(fù)值,Y 軸向上。

· max_glyph_d: 的別名descent。

· max_glyph_h:最大字形高度,即渲染文本中包含的所有字形的最大高度,相當(dāng)于上升-下降。

· max_glyph_w:最大字形寬度,即渲染文本中包含的所有字形的最大寬度。

· n:輸入幀數(shù),從0開始

· rand(min, max):返回一個(gè)包含在 min 和 max 之間的隨機(jī)數(shù)

· sar:輸入樣本縱橫比。

· t:時(shí)間戳,以秒為單位,如果輸入時(shí)間戳未知,則為 NAN

· text_h:渲染文本的高度

· th: 的別名text_h。

· text_w:渲染文本的寬度

· tw: 的別名text_w。

· x:繪制文本的 x 偏移坐標(biāo)。

· y:繪制文本的 y 偏移坐標(biāo)。

這些參數(shù)允許 x 和 y 表達(dá)式相互引用,因此您可以例如指定 y=x/dar.

應(yīng)用自定義過濾器。

filter通常由更高級別的過濾器函數(shù)使用,例如 hflip ,但如果缺少過濾器實(shí)現(xiàn) ffmpeg-python ,您可以 filter 直接調(diào)用以 ffmpeg-python 將過濾器名稱和參數(shù)逐字傳遞給 ffmpeg 。

參數(shù)

函數(shù)名稱后綴_是為了避免與標(biāo)準(zhǔn) pythonfilter 函數(shù)混淆。

例子

替代名稱 filter ,以免與內(nèi)置的 pythonfilter 運(yùn)算符沖突。

應(yīng)用具有一個(gè)或多個(gè)輸出的自定義過濾器。

這 filter 與過濾器可以產(chǎn)生多個(gè)輸出相同。

要引用輸出流,請使用 .stream 運(yùn)算符或括號簡寫:

例子

水平翻轉(zhuǎn)輸入視頻。

修改輸入的色調(diào)和/或飽和度。

參數(shù)

將一個(gè)視頻疊加在另一個(gè)視頻之上。

參數(shù)

更改輸入幀的 PTS(表示時(shí)間戳)。

FFmpeg里有兩種時(shí)間戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顧名思義,前者是解碼的時(shí)間,后者是顯示的時(shí)間。

參數(shù)

修剪輸入,使輸出包含輸入的一個(gè)連續(xù)子部分。

參數(shù)

垂直翻轉(zhuǎn)輸入視頻。

應(yīng)用縮放和平移效果。

參數(shù)

Python中的eval()、filter()、float()函數(shù)有什么用?

Python解釋器內(nèi)置了許多函數(shù),這意味著我們無需定義,始終可以它們。下面按照函數(shù)的字母順序,討論一些常用的內(nèi)建函數(shù)。

eval()

eval()函數(shù)解析傳給它的表達(dá)式,并在程序中運(yùn)行Python表達(dá)式(代碼)。舉個(gè)例子:

x?=?1

eval("x?+?1")??#?注意:"x?+?1"是字符串

2

eval("4??9")

True

eval("'py'?*?3")

'pypypy'

eval("10?**?2")

100

eval()函數(shù)不僅僅能運(yùn)行簡單表達(dá)式,還能調(diào)用函數(shù),使用方法等等:

eval("abs(-11)")????????#?計(jì)算-11的絕對值

11

eval('"hello".upper()')???#?把字符串'hello'全變成大寫字母

'HELLO'

import?os

eval('os.getcwd()')???????#?獲取當(dāng)前的工作目錄

'/home/thepythonguru'

但是需要注意的是eval()僅適用于表達(dá)式,嘗試傳遞語句會導(dǎo)致語法錯(cuò)誤:

eval('a?=?1')????????????????????#?賦值語句

Traceback?(most?recent?call?last):

File?"",?line?1,?in

File?"",?line?1

a?=?1

^

SyntaxError:?invalid?syntax

eval('import?re')?????????????#?導(dǎo)入語句

Traceback?(most?recent?call?last):

File?"",?line?1,?in

File?"",?line?1

import?re

^

SyntaxError:?invalid?syntax

此外,使用eval()語句應(yīng)該十分小心,永遠(yuǎn)不要將不受信任的源直接傳遞給eval()。 因?yàn)閻阂庥脩艉苋菀讓δ南到y(tǒng)造成破壞。 例如:

eval(input())??#?eval()將執(zhí)行用戶輸入的代碼

用戶輸入以下代碼就能從系統(tǒng)中刪除所有文件:

os.system("RM?-RF?/")

#?上面輸入相當(dāng)于執(zhí)行:

eval('os.system("RM?-RF?/")')

filter()

"filter"的意思是“過濾”,filter()函數(shù)需要兩個(gè)參數(shù):一個(gè)函數(shù)對象和一個(gè)可迭代對象。函數(shù)對象需要返回一個(gè)布爾值,并為可迭代的每個(gè)元素調(diào)用。 filter()函數(shù)僅返回那些通過函數(shù)對象返回值為true的元素。解釋有一些抽象,看一個(gè)例子:

a?=?[1,?2,?3,?4,?5,?6]

filter(lambda?x?:?x?%?2?==?0,?a)????????#?過濾出所有偶數(shù),結(jié)果返回一個(gè)filter對象

filter?object?at?0x1036dc048

list(filter(lambda?x?:?x?%?2?==?0,?a))??#?可以使用list()函數(shù)使fileter對象變成列表,方便查看結(jié)果

[2,?4,?6]

下面是另外一個(gè)例子:

dict_a?=?[{'name':?'python',?'points':?10},?{'name':?'java',?'points':?8}]

filter(lambda?x?:?x['name']?==?'python',?dict_a)??#?過濾出列表中鍵'name'為值'python'的字典

filter?object?at?0x1036de128

tuple(filter(lambda?x?:?x['name']?==?'python',?dict_a))??#?使用tuple()函數(shù)使結(jié)果變成字典

({'name':?'python',?'points':?10},)

float()

float()的參數(shù)是一個(gè)數(shù)字或者字符串,它返回一個(gè)浮點(diǎn)數(shù)。如果參數(shù)是字符串,則字符串中應(yīng)該包含一個(gè)數(shù)字,并可以在數(shù)字前加入一個(gè) '-' 符號,代表負(fù)數(shù)。參數(shù)也可以是表示NaN(非數(shù)字)或正無窮大的字符串。如果沒有任何參數(shù)的話,將返回0.0。

float('+1.23')?????????#?1.23

1.23

float('???-12345\n')???#?-12345

-12345.0

float('1e-003')????????#?0.001

0.001

float('+1E6')??????????#?10的6次冪

1000000.0

float('-Infinity')?????#?無窮小

-inf

float('-inf')?+?100?????#?負(fù)無窮小加100仍等于負(fù)無窮小

-inf

float('inf')???????????#?無窮大

inf

float('NaN')???????????#?NaN,代表非數(shù)字

nan

關(guān)于Python的基礎(chǔ)問題可以看下這個(gè)網(wǎng)頁的視頻教程,網(wǎng)頁鏈接,希望我的回答能幫到你。

python filter過濾器疑問

過濾器第二個(gè)參數(shù)可以是生成器也可以是列表,只要是iterable就可以,生成器也是一個(gè)iterable。

next()得到的是iterable的一個(gè)結(jié)果值。

過濾器返回的是一個(gè)map,map本身也是一個(gè)iterable,可以使用next()或者for去迭代它。

filter()在迭代的時(shí)候逐個(gè)返回值,與生成器類似,都是在每次調(diào)取值時(shí)才算出一個(gè)來。

Python中幾個(gè)有趣的語法糖

當(dāng)然是函數(shù)式那一套黑魔法啦,且聽我細(xì)細(xì)道來。 lambda表達(dá)式也就是匿名函數(shù)。用法:lambda 參數(shù)列表 : 返回值例: +1函數(shù) f=lambda x:x+1 max函數(shù)(條件語句的寫法如下) f_max=lambda x,y:x if xy else y 上述定義的函數(shù)與用def定義的函數(shù)沒有區(qū)別,而且左邊的f=在某些情況下并不是必要的。 filter,map,reduce filter函數(shù)接受兩個(gè)參數(shù),第一個(gè)是過濾函數(shù),第二個(gè)是可遍歷的對象,用于選擇出所有滿足過濾條件的元素,不同版本的filter的返回值稍有區(qū)別,我用的是python3.5,filter返回的是經(jīng)過過濾的可遍歷對象。例:去除小寫字母 s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC") for ch in s: print(ch) map函數(shù)接受的參數(shù)類型與filter類似,它用于把函數(shù)作用于可遍歷對象的每一個(gè)元素。類似于數(shù)學(xué)中映射的概念。例:求y=2x+1(偷偷用了一下range函數(shù)生成定義域) s=map(lambda x:2*x+1,range(6)) for x in s: print(x) reduce函數(shù)對每個(gè)元素作累計(jì)操作,它接受的第一個(gè)參數(shù)必須是有兩個(gè)參數(shù)的函數(shù)。例:求和 from functools import reduce s=reduce(lambda x,y:x+y,range(1,6)) print(s) 求乘積(第三個(gè)可選參數(shù)表示累計(jì)變量的初值) from functools import reduce s=reduce(lambda x,y:x*y,range(1,6),1) print(s) 柯里化(curry)函數(shù)如果一個(gè)函數(shù)需要2個(gè)參數(shù),而你只傳入一個(gè)參數(shù),那么你就可以得到一個(gè)柯里化的函數(shù),這是函數(shù)式編程語言的重要特性之一,遺憾的是,python并不能在語法層面支持柯里化調(diào)用,但它在庫中提供了接口。例: *3函數(shù) f_mul=lambda x,y:x*y from functools import partial mul3=partial(f_mul,3) print(mul3(1)) print(mul3(6)) 打包與解包有點(diǎn)類似于函數(shù)式中的模式匹配,略牽強(qiáng)。 t=(1,2,3) x,y,z=t 列表生成式這個(gè)也有點(diǎn)牽強(qiáng),不知道嚴(yán)格意義上講屬不屬于函數(shù)式風(fēng)格。例:生成奇數(shù)序列 l=[2*x+1 for x in range(10)] for i in l: print(i) 最后來一個(gè)彩蛋(以前某答主提到的用調(diào)分函數(shù)來美顏的算法,忘了出處了,侵刪) from PIL import Image from math import sqrt im = Image.open("a.jpg") ret= im.convert(mode="RGB") ret = ret.point(lambda x:sqrt(x)*sqrt(255)) ret.save("b.jpg")

Python 數(shù)據(jù)處理(三十九)—— groupby(過濾)

filter 方法可以返回原始對象的子集.

例如,我們想提取分組內(nèi)的和大于 3 的所有分組的元素

filter 的參數(shù)必須是一個(gè)函數(shù),函數(shù)參數(shù)是每個(gè)分組,并且返回 True 或 False

例如,提取元素個(gè)數(shù)大于 2 的分組

另外,我們也可以過濾掉不滿足條件的組,而是返回一個(gè)類似索引對象。在這個(gè)對象中,沒有通過的分組的元素被 NaN 填充

對于具有多列的 DataFrames ,過濾器應(yīng)明確指定一列作為過濾條件

在進(jìn)行聚合或轉(zhuǎn)換時(shí),你可能想對每個(gè)分組調(diào)用一個(gè)實(shí)例方法,例如

但是,如果需要傳遞額外的參數(shù)時(shí),它會變得很冗長。我們可以直接使用分派到組對象上的方法

實(shí)際上這生成了一個(gè)函數(shù)包裝器,在調(diào)用時(shí),它接受所有傳遞的參數(shù),并在每個(gè)分組上進(jìn)行調(diào)用。

然后,這個(gè)結(jié)果可以和 agg 和 transform 結(jié)合在一起使用

在上面的例子中,我們按照年份分組,然后對每個(gè)分組中使用 fillna 補(bǔ)缺失值

nlargest 和 nsmallest 可以在 Series 類型的 groupby 上使用

對分組數(shù)據(jù)的某些操作可能并不適合聚合或轉(zhuǎn)換。或者說,你可能只是想讓 GroupBy 來推斷如何合并結(jié)果

我們可以使用 apply 函數(shù),例如

改變返回結(jié)果的維度

在 Series 上使用 apply 類似

對于之前的示例數(shù)據(jù)

假設(shè),我們想按 A 分組并計(jì)算組內(nèi)的標(biāo)準(zhǔn)差,但是 B 列的數(shù)據(jù)我們并不關(guān)心。

如果我們的函數(shù)不能應(yīng)用于某些列,則會隱式的刪除這些列,所以

直接計(jì)算標(biāo)準(zhǔn)差并不會報(bào)錯(cuò)

可以使用分類變量進(jìn)行分組,分組的順序會按照分類變量的順序

可以使用 pd.Grouper 控制分組,對于如下數(shù)據(jù)

可以按照一定的頻率對特定列進(jìn)行分組,就像重抽樣一樣

可以分別對列或索引進(jìn)行分組

類似于 Series 和 DataFrame ,可以使用 head 和 tail 獲取分組前后幾行

在 Series 或 DataFrame 中可以使用 nth() 來獲取第 n 個(gè)元素,也可以用于獲取每個(gè)分組的某一行

如果你要選擇非空項(xiàng),可以使用關(guān)鍵字參數(shù) dropna ,如果是 DataFrame ,需要指定為 any 或 all (類似于 DataFrame.dropna(how='any|all') )

與其他方法一樣,使用 as_index=False 分組名將不會作為索引

你也可以傳入一個(gè)整數(shù)列表,一次性選取多行

使用 cumcount 方法,可以查看每行在分組中出現(xiàn)的順序

可以使用 ngroup() 查看分組的順序,該順序與 cumcount 的順序相反。

注意 :該順序與迭代時(shí)的分組順序一樣,并不是第一次觀測到的順序

如何用python寫布隆過濾器

下面的是網(wǎng)絡(luò)上找到的python的布隆過濾器的實(shí)現(xiàn).

#!/usr/local/bin/python2.7

#coding=gbk

'''

Created?on?2012-11-7

@author:?palydawn

'''

import?cmath

from?BitVector?import?BitVector

class?BloomFilter(object):

def?__init__(self,?error_rate,?elementNum):

#計(jì)算所需要的bit數(shù)

self.bit_num?=?-1?*?elementNum?*?cmath.log(error_rate)?/?(cmath.log(2.0)?*?cmath.log(2.0))

#四字節(jié)對齊

self.bit_num?=?self.align_4byte(self.bit_num.real)

#分配內(nèi)存

self.bit_array?=?BitVector(size=self.bit_num)

#計(jì)算hash函數(shù)個(gè)數(shù)

self.hash_num?=?cmath.log(2)?*?self.bit_num?/?elementNum

self.hash_num?=?self.hash_num.real

#向上取整

self.hash_num?=?int(self.hash_num)?+?1

#產(chǎn)生hash函數(shù)種子

self.hash_seeds?=?self.generate_hashseeds(self.hash_num)

def?insert_element(self,?element):

for?seed?in?self.hash_seeds:

hash_val?=?self.hash_element(element,?seed)

#取絕對值

hash_val?=?abs(hash_val)

#取模,防越界

hash_val?=?hash_val?%?self.bit_num

#設(shè)置相應(yīng)的比特位

self.bit_array[hash_val]?=?1

#檢查元素是否存在,存在返回true,否則返回false?

def?is_element_exist(self,?element):

for?seed?in?self.hash_seeds:

hash_val?=?self.hash_element(element,?seed)

#取絕對值

hash_val?=?abs(hash_val)

#取模,防越界

hash_val?=?hash_val?%?self.bit_num

#查看值

if?self.bit_array[hash_val]?==?0:

return?False

return?True

#內(nèi)存對齊????

def?align_4byte(self,?bit_num):

num?=?int(bit_num?/?32)

num?=?32?*?(num?+?1)

return?num

#產(chǎn)生hash函數(shù)種子,hash_num個(gè)素?cái)?shù)

def?generate_hashseeds(self,?hash_num):

count?=?0

#連續(xù)兩個(gè)種子的最小差值

gap?=?50

#初始化hash種子為0

hash_seeds?=?[]

for?index?in?xrange(hash_num):

hash_seeds.append(0)

for?index?in?xrange(10,?10000):

max_num?=?int(cmath.sqrt(1.0?*?index).real)

flag?=?1

for?num?in?xrange(2,?max_num):

if?index?%?num?==?0:

flag?=?0

break

if?flag?==?1:

#連續(xù)兩個(gè)hash種子的差值要大才行

if?count??0?and?(index?-?hash_seeds[count?-?1])??gap:

continue

hash_seeds[count]?=?index

count?=?count?+?1

if?count?==?hash_num:

break

return?hash_seeds

def?hash_element(self,?element,?seed):

hash_val?=?1

for?ch?in?str(element):

chval?=?ord(ch)

hash_val?=?hash_val?*?seed?+?chval

return?hash_val

'''

#測試代碼

bf?=?BloomFilter(0.001,?1000000)

element?=?'palydawn'

bf.insert_element(element)

print?bf.is_element_exist('palydawn')'''

#其中使用了BitVector庫,python本身的二進(jìn)制操作看起來很麻煩,這個(gè)就簡單多了

如果解決了您的問題請采納!

如果未解決請繼續(xù)追問

網(wǎng)頁題目:python過濾器函數(shù),過濾函數(shù)是什么
URL網(wǎng)址:http://muchs.cn/article20/hcjsco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站App開發(fā)、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)