基于Python列表解析(列表推導(dǎo)式)
列表解析——用來動態(tài)地創(chuàng)建列表
[expr for iter_var in iterable if cond_expr]
例子一:
map(lambda x: x**2, range(6)) [0, 1, 4, 9, 16, 25]
[x**2 for x in range(6)] [0, 1, 4, 9, 16, 25]
列表解析式可以取代內(nèi)建的map()函數(shù)以及l(fā)ambda,而且++效率更高++。
例子二:
seq = [11, 10, 9, 8, 7, 6] filter(lambda x: x % 2, seq) [11, 9, 7]
[x for x in seq if x % 2] [11, 9, 7]
例子三:
找出文本中最長的詞
# 第一個最長的詞 longest = '' for word in text: if len(word) > len(longest): longest = word
#所有最長的詞 maxlen = max(len(word) for word in text) # 生成器表達式 [word for word in text if len(word) == maxlen] #鏈表推導(dǎo)式
不足:列表解析得一個不足就是必要生成所有數(shù)據(jù),用于創(chuàng)建整個列表。這可能對有大量數(shù)據(jù)得迭代其有負面效應(yīng)。
++解決方法++:生成器表達式,通過結(jié)合列表解析和生成器解決了這個問題。
嵌套列表推導(dǎo)式
例一
all_data = [[1,3,5,7,9], [2,4,6,8,10]] result = [] for nums in all_data: temp_num = [num for num in nums if num >= 5] result.extend(temp_num)
嵌套列表推導(dǎo)式
result = [num for nums in all_data for num in nums if num >= 5]
推導(dǎo)式中for的部分是按嵌套順序排列的。
例二
some_tuples = [(1,2,3), (4,5,6), (7,8,9)] flattened = [x for tup in some_tuples for x in tup] flattened [1,2,3,4,5,6,7,8,9]
以上這篇基于Python列表解析(列表推導(dǎo)式)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解python中g(shù)roupby函數(shù)通俗易懂
這篇文章主要介紹了詳解python中g(shù)roupby函數(shù)通俗易懂,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05基于Python實現(xiàn)簡單的漢字拼音轉(zhuǎn)換工具
將漢字轉(zhuǎn)為拼音,可以用于批量漢字注音、文字排序、拼音檢索文字等常見場景?,F(xiàn)在互聯(lián)網(wǎng)上有許多拼音轉(zhuǎn)換工具,基于Python的開源模塊也不少,本文將利用pypinyin模塊制作簡單的漢字拼音轉(zhuǎn)換工具,感興趣的可以了解一下2022-09-09python3+PyQt5實現(xiàn)自定義分數(shù)滑塊部件
這篇文章主要為大家詳細介紹了python3+PyQt5實現(xiàn)自定義分數(shù)滑塊部件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04如何通過pycharm實現(xiàn)對數(shù)據(jù)庫的查詢等操作(非多步操作)
這篇文章主要介紹了如何通過pycharm實現(xiàn)對數(shù)據(jù)庫的查詢等操作(非多步操作),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07django 將自帶的數(shù)據(jù)庫sqlite3改成mysql實例
這篇文章主要介紹了django 將自帶的數(shù)據(jù)庫sqlite3改成mysql實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07