python推導(dǎo)式的使用方法實例
前言
推導(dǎo)式提供了更簡潔高效的方法來生成序列而又不失代碼的可讀性。
定義: 推導(dǎo)式是 Python 里很有用的一個特性,它可以用一行代碼就可以創(chuàng)建一個新的序列(比如:列表,集合,字典等等)。通過這個性能,不僅可以少寫很多代碼,而且性能上也更快。
Python 里有四種推導(dǎo)式:
- 列表推導(dǎo)式(List Comprehensions)
- 字典推導(dǎo)式(Dictionary Comprehensions)
- 集合推導(dǎo)式(Set Comprehensions)
- 生成器推導(dǎo)式(Generator Comprehensions)
一、列表推導(dǎo)式(List Comprehensions)
假如你有一個列表,你想去掉該列表中的所有負數(shù),那通常的做法使用 for 循環(huán)
numbers=[1,-2,3,-4,5] new_nums=[] for num in numbers: if num>0: new_nums.append(num) print(new_nums)
輸出結(jié)果:

但如果我們用列表推導(dǎo)式來實現(xiàn),那么這個過程就短得多,只需要一行代碼:
numbers=[1,-2,3,-4,5] new_nums=[num for num in numbers if num>0] print(new_nums)
輸出結(jié)果同上。
列表推導(dǎo)式的結(jié)構(gòu):
output_list = [expression for var in input_list if condition]
這里的 if condition 語句并不是必須有的。
二、字典推導(dǎo)式(Dictionary Comprehensions)
跟列表推導(dǎo)式一樣,通過同樣方式生成字典的方法,就是字典推導(dǎo)式。
假如你想從一個全是數(shù)字的列表來創(chuàng)建一個字典,列表里的數(shù)字作為 key, 數(shù)字的的字符串值作為 value, 然后再某個限制條件,最終獲得你想要的字典數(shù)據(jù):
nums=[1,2,3,4,5,6,7,8]
dict={}
for num in nums:
if num %2 == 0:
dict[num] = str(num)
print(dict)
輸出結(jié)果:

如果我們使用字典推導(dǎo)式,就會簡潔的多:
nums=[1,2,3,4,5,6,7,8]
dict={num:str(num) for num in nums if num % 2 == 0}
print(dict)
輸出結(jié)果同上。
字典推導(dǎo)式的模板:
{key:value for (key,value) in dict if key,value satisfy condition}
三、集合推導(dǎo)式(Set Comprehensions)
集合推導(dǎo)式跟列表推導(dǎo)式差不多。就比如我們要把一個全是數(shù)字的列表中的奇數(shù)組成一個集合,用 for 循環(huán)的話:
numbers=[1,2,3,4,5,6,7,8] filtered_nums=set() for num in numbers: if num %2 == 0: filtered_nums.add(num) print(filtered_nums)
輸出結(jié)果:

如果我們使用集合表達式來表示:
numbers=[1,2,3,4,5,6,7,8]
filtered_nums={num for num in numbers if num %2 == 0}
print(filtered_nums)
輸出結(jié)果同上。
注意: 集合推導(dǎo)式除了是使用 {} 外,其他形式都跟列表推導(dǎo)式一樣。
四、生成器推導(dǎo)式(Generator Comprehensions)
生成器推導(dǎo)式(或叫生成器表達式),其結(jié)構(gòu)也跟列表表達式相似。
例如我們將數(shù)字列表中各項平方運算并排除奇數(shù)項:
def square_even(numbers):
for number in numbers:
if number % 2 == 0:
yield (number * number)
numbers=[1,2,3,4,5,6]
square_numbers=square_even(numbers)
for number in square_numbers:
print(number)
輸出結(jié)果:

使用生成器推導(dǎo)式顯示為:
numbers=[1,2,3,4,5,6] square_numbers=(num *num for num in numbers if num % 2 ==0) for number in square_numbers: print(number)
輸出結(jié)果同上。
注意: 生成器推導(dǎo)式是使用 () ,其他基本結(jié)構(gòu)跟列表推導(dǎo)式一樣。
總結(jié)
到此這篇關(guān)于python推導(dǎo)式的使用方法的文章就介紹到這了,更多相關(guān)python推導(dǎo)式使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows中使用wxPython和py2exe開發(fā)Python的GUI程序的實例教程
wxPython是一款集成了Python的圖形化類庫的工具,而py2exe是一款將Python程序轉(zhuǎn)換為exe可執(zhí)行文件的程序,二者搭配可以輕松地在Windows中創(chuàng)建圖形化程序,這里我們就來學(xué)習(xí)Windows中使用wxPython和py2exe開發(fā)Python的GUI程序的實例教程:2016-07-07
jupyter notebook 寫代碼自動補全的實現(xiàn)
這篇文章主要介紹了jupyter notebook 寫代碼自動補全的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python 根據(jù)網(wǎng)易云歌曲的ID 直接下載歌曲的實例
今天小編就為大家分享一篇python 根據(jù)網(wǎng)易云歌曲的ID 直接下載歌曲的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
由Python運算π的值深入Python中科學(xué)計算的實現(xiàn)
這篇文章主要介紹了由Python運算π的值深入Python中科學(xué)計算的實現(xiàn),由簡單的計算發(fā)散出各種算法的講解,需要的朋友可以參考下2015-04-04
Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式
在分析處理Excel表格時,我們可能需要使用各種公式或函數(shù)對表格數(shù)據(jù)進行計算,從而分析出更多的信息,但在展示、分享或再利用分析結(jié)果時,我們可能需要將含有公式的單元格轉(zhuǎn)換為靜態(tài)數(shù)值,本文將介紹如何使用Python代碼批量移除Excel單元格中的公式并保留數(shù)值2024-10-10
python GUI庫圖形界面開發(fā)之PyQt5信號與槽多窗口數(shù)據(jù)傳遞詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5信號與槽多窗口數(shù)據(jù)傳遞詳細使用方法與實例,需要的朋友可以參考下2020-03-03
Python字符串的encode與decode研究心得亂碼問題解決方法
為什么Python使用過程中會出現(xiàn)各式各樣的亂碼問題,明明是中文字符卻顯示成“\xe4\xb8\xad\xe6\x96\x87”的形式?2009-03-03

