python推導(dǎo)式知識(shí)點(diǎn)有哪些

這篇文章主要介紹“python推導(dǎo)式知識(shí)點(diǎn)有哪些”,在日常操作中,相信很多人在python推導(dǎo)式知識(shí)點(diǎn)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python推導(dǎo)式知識(shí)點(diǎn)有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

麻栗坡網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,麻栗坡網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為麻栗坡近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的麻栗坡做網(wǎng)站的公司定做!

推導(dǎo)式的定義

推導(dǎo)式可以簡(jiǎn)潔、高效地將散亂的數(shù)據(jù)組織起來存放到容器(列表、元組、字典、集合)中。

推導(dǎo)式是python簡(jiǎn)潔、優(yōu)雅、高效的完美體現(xiàn)。熟練掌握推導(dǎo)式,相信會(huì)對(duì)你編寫python程序有很大的幫助。

運(yùn)用場(chǎng)景

推導(dǎo)式一般是配合循環(huán)使用的,通過推導(dǎo)式組織起來的數(shù)據(jù)可以很方便的循環(huán)處理,未經(jīng)組織的零散數(shù)據(jù)處理起來會(huì)很麻煩。例如要找到很多數(shù)字中符合某種特征的數(shù)字,放入列表中循環(huán)判斷處理就很方便。再如讀取日志文件,需要篩選出符合某種條件的記錄時(shí),將數(shù)據(jù)組織成列表嵌套字典結(jié)構(gòu)可讀性會(huì)很高、處理也更加方便。python程序員在編寫代碼時(shí)幾乎每天都會(huì)用到推導(dǎo)式。

推導(dǎo)式的構(gòu)造

推導(dǎo)式可以創(chuàng)建容器對(duì)象(列表、元組、字典、集合等等),推導(dǎo)式的基本構(gòu)造請(qǐng)看下圖:

python推導(dǎo)式知識(shí)點(diǎn)有哪些

  • 容器模板可以是表達(dá)式,可以存在多個(gè)變量。

  • for語句可以嵌套多條for語句

  • if語句可對(duì)容器模板中的變量進(jìn)行篩選,滿足條件的才放入容器,不滿足條件的則舍棄。

推導(dǎo)式案例

以下會(huì)列舉非常多的代碼示例,學(xué)習(xí)推導(dǎo)式的朋友一定要認(rèn)真練習(xí),在練習(xí)的過程中熟悉和掌握推導(dǎo)式。

不同容器的推導(dǎo)式:

# 列表推導(dǎo)式:0-9
l1 = [i for i in range(10)]
# 列表推導(dǎo)式:0-9范圍內(nèi)的偶數(shù)
l2 = [i for i in range(10) if i % 2 == 0]
print(l1)
print(l2)
# 元組推導(dǎo)式:0-9
t1 = tuple(i for i in range(10))  # 不用tuple生成的是迭代器
# 元組推導(dǎo)式:0-9范圍內(nèi)的偶數(shù)
t2 = tuple(i for i in range(10) if i % 2 == 0)  # 不用tuple生成的是迭代器
print(t1)
print(t2)
# 集合推導(dǎo)式:0-9
l1 = {i for i in range(10)}
# 集合推導(dǎo)式:0-9范圍內(nèi)的偶數(shù)
l2 = {i for i in range(10) if i % 2 == 0}
print(l1)
print(l2)
# 字典推導(dǎo)式,鍵是0-9,值是a-j
d1 = {x: y for x, y in zip(range(10), 'abcdefghij')}
# 字典推導(dǎo)式,鍵是0-9,值是a-j
d2 = {x: y for x, y in zip(range(10), (chr(i) for i in range(97, 107)))}
# 字典推導(dǎo)式,一行代碼互換鍵和值
d3 = {y:x for x,y in d1.items()}
print(d1)
print(d2)
print(d3)

out:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
(0, 2, 4, 6, 8)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{0, 2, 4, 6, 8}
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}
{'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9}

多條for嵌套推導(dǎo)式:

# 注意多條for嵌套時(shí),先循環(huán)最左邊,再循環(huán)右邊
list1 = [(x, y) for x in range(5) for y in range(3)]
list2 = [[x,y,z] for x in range(1,3) for y in range(1,4) for z in range(1,3)]
print(list1)
print(list2)

out:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)]
[[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [1, 3, 1], [1, 3, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2], [2, 3, 1], [2, 3, 2]]

容器模板:

list1 = [(x, y) for x in range(3) for y in range(3)] #list內(nèi)的元素是tuple
list2 = [{x, y} for x in range(3) for y in range(3)] #list內(nèi)的元素是set
list3 = [[x, y] for x in range(3) for y in range(3)] #list內(nèi)的元素是list
print(list1)
print(list2)
print(list3)

out:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[{0}, {0, 1}, {0, 2}, {0, 1}, {1}, {1, 2}, {0, 2}, {1, 2}, {2}]
[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

容器模板中使用表達(dá)式:

# 創(chuàng)建字典,鍵值對(duì)是0:a..9:j
dict1 = {x: y for x, y in zip(range(10), 'abcdefghij')}
# 創(chuàng)建字典,鍵值對(duì)是0:a..9:j,將鍵轉(zhuǎn)換成字符型,將值從小寫字母轉(zhuǎn)換成大寫字母
dict2 = {str(x): y.upper() for x, y in zip(range(10), 'abcdefghij')} 
print(dict1)
print(dict2)

out:
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}
{'0': 'A', '1': 'B', '2': 'C', '3': 'D', '4': 'E', '5': 'F', '6': 'G', '7': 'H', '8': 'I', '9': 'J'}

if篩選元素:

list1 = [chr(i) for i in range(97, 123)]  # 創(chuàng)建列表,元素是26個(gè)小寫字母
list2 = [chr(i) for i in range(97, 123) if i % 2 == 0]  # 創(chuàng)建列表,只保留ascii值是偶數(shù)的字母
list3 = [chr(i) for i in range(97, 123) if i % 2 == 1]  # 創(chuàng)建列表,只保留ascii值是奇數(shù)的字母
list4 = [chr(i) for i in range(97, 123) if i < 97 + 13]  # 創(chuàng)建列表,只保留26個(gè)字母的前面一半
list5 = [chr(i) for i in range(97, 123) if i >= 97 + 13]  # 創(chuàng)建列表,只保留26個(gè)字母的后面一半

print(list1)
print(list2)
print(list3)
print(list4)
print(list5)

out:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
['b', 'd', 'f', 'h', 'j', 'l', 'n', 'p', 'r', 't', 'v', 'x', 'z']
['a', 'c', 'e', 'g', 'i', 'k', 'm', 'o', 'q', 's', 'u', 'w', 'y']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']
['n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

到此,關(guān)于“python推導(dǎo)式知識(shí)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

標(biāo)題名稱:python推導(dǎo)式知識(shí)點(diǎn)有哪些
路徑分享:http://bm7419.com/article36/goehpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、虛擬主機(jī)網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、全網(wǎng)營銷推廣移動(dòng)網(wǎng)站建設(shè)

廣告

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

商城網(wǎng)站建設(shè)