新聞中心
python 8個(gè)常用內(nèi)置函數(shù)解說(shuō)
8個(gè)超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、黔西網(wǎng)絡(luò)推廣、重慶小程序開(kāi)發(fā)、黔西網(wǎng)絡(luò)營(yíng)銷、黔西企業(yè)策劃、黔西品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供黔西建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強(qiáng)大,用好了可以大大提高代碼效率。
這次來(lái)梳理下8個(gè)好用的python內(nèi)置函數(shù)
1、set()
當(dāng)需要對(duì)一個(gè)列表進(jìn)行去重操作的時(shí)候,set()函數(shù)就派上用場(chǎng)了。
用于創(chuàng)建一個(gè)集合,集合里的元素是無(wú)序且不重復(fù)的。集合對(duì)象創(chuàng)建后,還能使用并集、交集、差集功能。
2、eval()之前有人問(wèn)如何用python寫(xiě)一個(gè)四則運(yùn)算器,輸入字符串公式,直接產(chǎn)生結(jié)果。用eval()來(lái)做就很簡(jiǎn)單:eval(str_expression)作用是將字符串轉(zhuǎn)換成表達(dá)式,并且執(zhí)行。
3、sorted()在處理數(shù)據(jù)過(guò)程中,我們經(jīng)常會(huì)用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時(shí)候就需要用到sorted() ,它可以對(duì)任何可迭代對(duì)象進(jìn)行排序,并返回列表。對(duì)列表升序操作:
對(duì)元組倒序操作:
使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長(zhǎng)度來(lái)排序:
根據(jù)自定義規(guī)則,對(duì)元組構(gòu)成的列表進(jìn)行排序:
4、reversed()如果需要對(duì)序列的元素進(jìn)行反轉(zhuǎn)操作,reversed()函數(shù)能幫到你。reversed()接受一個(gè)序列,將序列里的元素反轉(zhuǎn),并最終返回迭代器。
5、map()做文本處理的時(shí)候,假如要對(duì)序列里的每個(gè)單詞進(jìn)行大寫(xiě)轉(zhuǎn)化操作。這個(gè)時(shí)候就可以使用map()函數(shù)。
map()會(huì)根據(jù)提供的函數(shù),對(duì)指定的序列做映射,最終返回迭代器。也就是說(shuō)map()函數(shù)會(huì)把序列里的每一個(gè)元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個(gè)例子,對(duì)列表里的每個(gè)數(shù)字作平方處理:
6、reduce()前面說(shuō)到對(duì)列表里的每個(gè)數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個(gè)元素相乘,該怎么做呢?這時(shí)候用到reduce()函數(shù)。
reduce()會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。第一、第二個(gè)元素先進(jìn)行函數(shù)操作,生成的結(jié)果再和第三個(gè)元素進(jìn)行函數(shù)操作,以此類推,最終生成所有元素累積運(yùn)算的結(jié)果。再舉個(gè)例子,將字母連接成字符串。
你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來(lái)講,是因?yàn)樗匾恕?/p>
7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?
filter()函數(shù)輕松完成了任務(wù),它用于過(guò)濾序列,過(guò)濾掉不符合條件的元素,返回一個(gè)迭代器對(duì)象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個(gè)元素映射到函數(shù),最終返回結(jié)果。我們?cè)僭囋?,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個(gè)場(chǎng)景,同時(shí)打印出序列里每一個(gè)元素和它對(duì)應(yīng)的順序號(hào),我們用enumerate()函數(shù)做做看。
enumerate翻譯過(guò)來(lái)是枚舉、列舉的意思,所以說(shuō)enumerate()函數(shù)用于對(duì)序列里的元素進(jìn)行順序標(biāo)注,返回(元素、索引)組成的迭代器。再舉個(gè)例子說(shuō)明,對(duì)字符串進(jìn)行標(biāo)注,返回每個(gè)字母和其索引。
安利3個(gè)被程序員夸爆的Python編程小功能
隨著數(shù)據(jù)挖掘分析在企業(yè)業(yè)務(wù)層面的深度應(yīng)用,我們會(huì)發(fā)現(xiàn),在實(shí)際業(yè)務(wù)場(chǎng)景中,數(shù)據(jù)分析工作已經(jīng)逐漸分為2個(gè)層次;較為流程化但與業(yè)務(wù)深度結(jié)合的數(shù)據(jù)分析工作,會(huì)更傾向于讓業(yè)務(wù)人員通過(guò)專業(yè)分析工具進(jìn)行自主 探索 分析,比如我們的Tempo大數(shù)據(jù)分析平臺(tái),就可以通過(guò)拖拽式、智能化的簡(jiǎn)便操作,幫助業(yè)務(wù)人員快速上手?jǐn)?shù)據(jù)分析工作,快速將業(yè)務(wù)數(shù)據(jù)價(jià)值變現(xiàn)。
而針對(duì)一些更加細(xì)致、專業(yè)化的建模分析需求,其實(shí)還是通過(guò)代碼的方式去實(shí)現(xiàn)更加高效靈活。Tempo大數(shù)據(jù)分析平臺(tái)正是考慮到廣大專業(yè)數(shù)據(jù)分析人員的實(shí)際需求,專門開(kāi)發(fā)了 【擴(kuò)展編程】 這一功能模塊,讓自定義編程和平臺(tái)中已有的節(jié)點(diǎn)結(jié)合使用,快速提高數(shù)據(jù)分析工作效率!
為了讓廣大數(shù)據(jù)分析師在Tempo平臺(tái)中,既可以通過(guò)編程實(shí)現(xiàn)更加靈活的建模,也能避免原生Python編程的一些使用局限,我們還通過(guò)廣泛的用戶調(diào)研,在【擴(kuò)展編程】模塊設(shè)計(jì)了 3個(gè)提高Python編程易用性的小功能 ,下面我們一起來(lái)看看這三個(gè)功能都具體解決了哪些問(wèn)題~
1、Python洞察不直觀 ,分析結(jié)果可讀性低
我們常說(shuō)“一圖勝千言”,對(duì)于數(shù)據(jù)分析工作來(lái)說(shuō)更是如此。分析結(jié)果最終還是要直接賦能實(shí)際業(yè)務(wù),由于Python代碼行的形式讓分析結(jié)果可讀性極低,分析人員無(wú)法快速實(shí)現(xiàn)對(duì)數(shù)據(jù)的直觀 探索 分析,導(dǎo)致整體工作效率的降低。
2、Python調(diào)試分析難 ,校驗(yàn)調(diào)試流程多,反復(fù)折騰易出錯(cuò)
調(diào)試和分析是Python開(kāi)發(fā)中非常重要的環(huán)節(jié),但代碼 校驗(yàn)報(bào)錯(cuò)結(jié)果難查看 的問(wèn)題,讓很多數(shù)據(jù)分析人員大傷腦筋。
尤其是現(xiàn)在很多企業(yè)數(shù)據(jù)分析項(xiàng)目是在自己的數(shù)據(jù)平臺(tái)中進(jìn)行的,分析人員只能把平臺(tái)中的代碼復(fù)制到第三方平臺(tái)中進(jìn)行校驗(yàn),調(diào)試好后再粘貼回平臺(tái)中運(yùn)行,非常麻煩。
3、Python運(yùn)行總“缺包” ,寫(xiě)碼大半天,報(bào)錯(cuò)一瞬間
在一般的企業(yè)數(shù)據(jù)分析項(xiàng)目中,預(yù)先有可能會(huì)設(shè)置有多套Python環(huán)境,版本并不統(tǒng)一。這就會(huì)導(dǎo)致分析人員常常并不清楚自己當(dāng)前使用的到底是哪一套Python環(huán)境,在編碼時(shí)引用的Python包,在不同的Python環(huán)境上運(yùn)行很有可能會(huì)出現(xiàn)缺失,引起代碼執(zhí)行報(bào)錯(cuò),而且這種錯(cuò)誤信息并不好排查,一旦報(bào)錯(cuò)只能從頭再來(lái),讓程序員們白白做了無(wú)用功。
以往專業(yè)數(shù)據(jù)分析人員遇到以上問(wèn)題,只能選擇用更多的時(shí)間和精力去修復(fù)bug,那么在我們的Tempo大數(shù)據(jù)分析平臺(tái)之中,又是如何解決這些問(wèn)題,讓 Python編程的應(yīng)用 更簡(jiǎn)便、更高效、更適應(yīng)企業(yè)實(shí)際需求呢?
1、圖形化洞察,快速 探索 數(shù)據(jù)價(jià)值
針對(duì)傳統(tǒng)編碼數(shù)據(jù)分析方式難以直觀展示數(shù)據(jù)分析結(jié)果的缺點(diǎn),Tempo大數(shù)據(jù)分析平臺(tái)——擴(kuò)展編程模塊特別支持在代碼區(qū)域設(shè)置 通過(guò)matplotlib/seabron等圖形方法實(shí)現(xiàn)節(jié)點(diǎn)洞察 ,校驗(yàn)通過(guò)后,就可以直接在洞察區(qū)域中查看繪制的圖形,比如:折線圖、直方圖、條形圖、餅圖等。
以后業(yè)務(wù)部門簡(jiǎn)單的可視化分析需求就可以直接在建模挖掘分析的同時(shí)快速產(chǎn)出,立等可取,無(wú)需再周轉(zhuǎn)其他可視化分析工具,大大提高的數(shù)據(jù)價(jià)值變現(xiàn)的效率。
2、控制臺(tái),讓調(diào)試分析更便捷
針對(duì)傳統(tǒng)Python編程調(diào)試報(bào)錯(cuò)信息不好查看的問(wèn)題, Tempo大數(shù)據(jù)分析平臺(tái)—擴(kuò)展編程模塊中的控制臺(tái)功能,可以 直接在指定區(qū)域中顯示錯(cuò)誤信息和代碼中需要print的部分 ,便于使用者快速發(fā)現(xiàn)問(wèn)題,立即調(diào)整代碼。
除了幫助專業(yè)數(shù)據(jù)分析人員提高工作效率,控制臺(tái)中的【示例】小模塊還內(nèi)置了常用的參考代碼,可以幫助一些不太能熟練應(yīng)用Python編程語(yǔ)言的小白用戶,通過(guò)復(fù)用或小部分修改邏輯代碼的方式,也能快速完成數(shù)據(jù)邏輯處理工作。用好這個(gè)功能,團(tuán)隊(duì)內(nèi)部的技能培訓(xùn)也能更有章法了呢!
3、快速查詢Python環(huán)境和包版本,事前預(yù)防,再也不怕“丟包缺包”
Python編程最怕丟包缺包問(wèn)題,在Tempo大數(shù)據(jù)分析平臺(tái)中,我們內(nèi)置了Python環(huán)境版本和包版本的信息查詢組件,分析人員在編碼之前,可以預(yù)先查詢一下當(dāng)前的Python環(huán)境版本和包版本,如果發(fā)現(xiàn)有缺包就可以在編碼工作開(kāi)始之前補(bǔ)充安裝,把“丟包缺包”造成的代碼報(bào)錯(cuò)風(fēng)險(xiǎn)降到最低。
今天的Tempo小課堂中,小T主要給大家介紹了如何通過(guò)Python擴(kuò)展編程的三個(gè)小功能,幫助代碼偏好的專業(yè)數(shù)據(jù)分析人員減少不必要的麻煩操作,提高工作效率。
python程序分析pcap文件的丟包率問(wèn)題,
使用scapy、scapy_http就可以方便的對(duì)pcap包中的http數(shù)據(jù)包進(jìn)行解析
#!/usr/bin/env python
try:
import scapy.all as scapy
except ImportError:
import scapy
try:
# This import works from the project directory
import scapy_http.http
except ImportError:
# If you installed this package via pip, you just need to execute this
from scapy.layers import http
packets = scapy.rdpcap('f:\\abc123.pcap')
for p in packets:
print '=' * 78
[python] view plain copy
#print p.show()
for f in p.payload.fields_desc:
if f.name == 'src' or f.name == 'dst':
ct = scapy.conf.color_theme
vcol = ct.field_value
fvalue = p.payload.getfieldval(f.name)
reprval = f.i2repr(p.payload,fvalue)
print "%s : %s" % (f.name, reprval)
for f in p.payload.payload.fields_desc:
if f.name == 'load':
ct = scapy.conf.color_theme
vcol = ct.field_value
fvalue = p.payload.getfieldval(f.name)
reprval = f.i2repr(p.payload,fvalue)
print "%s : %s" % (f.name, reprval)
其中,p為數(shù)據(jù)包,scapy_http將其分為:
Ethernet-TCP-RAW三個(gè)層次,
使用p.show()函數(shù)可以打印出如下結(jié)果:
###[ Ethernet ]###
dst = 02:00:00:00:00:39
src = 00:00:00:01:02:09
type = 0x800
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 1014
id = 7180
flags =
frag = 0L
ttl = 45
proto = tcp
chksum = 0xbbf9
src = 126.209.59.13
dst = 121.113.176.25
\options \
###[ Raw ]###
load = '.....'
第一層是網(wǎng)絡(luò)層,包含源、目的mac、ip協(xié)議號(hào),第二層是tcp層,第三層包含端口號(hào)、http報(bào)文
其中每一層均為上一層的payload成員
分享題目:python丟包函數(shù),python怎么調(diào)包
網(wǎng)站路徑:http://fisionsoft.com.cn/article/hcgegp.html