【Python基礎(chǔ)】學(xué)習(xí)Python 一定要吃透這 5 個內(nèi)置函數(shù)
出品:Python數(shù)據(jù)之道
作者:Peter
編輯:Lemon
本文中介紹 Python 中 5 個高階內(nèi)置函數(shù),它們不僅能夠幫助我們了解 Python 的數(shù)據(jù)結(jié)構(gòu),同時也能加快數(shù)據(jù)處理的速度,體會到 Python 的強大。
zip
filter
enumberate
reversed/reverse
eval

1、zip
引例
首先,我們先來學(xué)習(xí)一個非常強大的內(nèi)置函數(shù):?zip。通過一個例子來引出?zip的使用:
需求:如果我們想對兩個列表對應(yīng)位置上的數(shù)字一一求和,該如何操作?
x = [1,2,3]
y = [4,5,6]
for循環(huán)實現(xiàn)

zip實現(xiàn)

具體實現(xiàn)過程:

查看使用文檔
help(zip)

zip接受一個序列
空序列

接受列表、元組、集合、字符串

zip接受多個序列
接受列表、元組、集合、字符串的任意組合:
## 列表、元組、集合、字符串的隨意組合
a = [1,2,3]
b = {4,5,6}
c = (7,8,9)
d = "zip"
print(list(zip(a,b))) # 列表+集合
print("------------")
print(list(zip(a,c))) # 列表+元組
print("------------")
print(list(zip(b,d))) # 集合+元組
print("------------")
print(list(zip(c,d))) # 元組+字符串
print("------------")
print(list(zip(a,b,c))) # 列表+集合+字符串

zip處理不同長度
上面的多個元素的長度都是相同的,下面的例子來展示?zip處理不同長度的序列。
我們發(fā)現(xiàn):zip會選擇最小長度的序列進行合并

2、filter
filter本身是?過濾的意思:就是將那些不符合我們要求的數(shù)據(jù)直接過濾舍棄掉,剩下那些符合要求的數(shù)據(jù)。
查看幫助文檔
將序列中的每個元素傳遞給函數(shù),執(zhí)行的結(jié)果為?True或者?False,將結(jié)果為?True的元素放入新的列表中。
返回的是?filter對象。如果想看具體的數(shù)據(jù),需要使用?list來展開。
help(filter)

使用自定義函數(shù)

使用匿名函數(shù)lambda

直接篩選條件
list(filter(lambda x: x>1, [0,1,9,-4,8,100]))
具體結(jié)果為:
[9, 8, 100]
字符篩選
list(filter(lambda x: x!="shenzhen", ["guangzhou","shanghai","shenzhen","changsha"])) # 篩選不滿足要求的字符串
['guangzhou', 'shanghai', 'changsha']
3、enumerate
enumerate是?Python的一個重要內(nèi)置函數(shù),返回的是可迭代序列的元素和下標,對列表、集合、字典、字符串等都適用的。
在?Python的?for循環(huán)中使用的非常廣泛。
如果想查看結(jié)果,需要使用list函數(shù)來進行顯示。
查看幫助文檔
help(enumerate)

用于列表、集合、元組、字符串、字典


4、reversed
reversed()函數(shù)是返回序列?seq的反向訪問的迭代器。
參數(shù)可以是?列表,元組,字符串,不改變原對象均可。下面通過具體的例子來說明:
查看幫助文檔
help(reversed)

用于列表

用于元組

用于字符串

4.1 reverse
用于對列表中的元素反向排序,方法沒有返回值,只是對列表中的元素進行反向排序
只針對列表!!!!!!
demo

集合不能用reverse
方法只針對列表
# 集合反向
set1 = {1,"python",3,"java",5}
set1.reverse() # 集合沒有reverse方法,該方法只針對列表

5、eval
語法
eval?直接返回傳入字符串的表達式的結(jié)果,語法為:
eval(expression[, globals[, locals]])
下面通過幾個例子來直接講解該方法的使用
例子
字符串和列表、字典、集合的轉(zhuǎn)化

帶上參數(shù)
三個參數(shù)的意義:
expression :字符串
globals :變量作用域,全局命名空間;如果被提供,則必須是一個字典對象
locals :變量作用域,局部命名空間;如果被提供,可以是任何映射對象
當它和globals中有重復(fù)的部分時,locals里的定義會覆蓋掉globals中的:當globals和locals中有沖突的部分時,locals有決定權(quán)。
如果locals沒有被 提供的話,則默認為globals。

理解expressions
s = "abcd"
eval(s)

# eval先將‘s’的引號剝?nèi)ィ玫絪.不可以進行計算,開始查找s是否是一個變量的名字,查找到s是一個字符串,所以程序輸出了s中的內(nèi)容
s = "abcd"
eval('s')
# 結(jié)果為:
'abcd'
單引號和雙引號區(qū)別
最外層一定要使用單引號

作者簡介 Peter,碩士畢業(yè)僧一枚,從電子專業(yè)自學(xué)Python入門數(shù)據(jù)行業(yè),擅長數(shù)據(jù)分析及可視化。喜歡數(shù)據(jù),堅持跑步,熱愛閱讀,樂觀生活。個人格言:不浮于世,不負于己 個人站點:www.renpeter.cn,歡迎常來小屋逛逛
-------?End -------
往期精彩回顧
獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:

