您好,登錄后才能下訂單哦!
Python中怎么實現(xiàn)列表解析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
列表解析——用來動態(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] #鏈表推導式
不足:列表解析得一個不足就是必要生成所有數(shù)據(jù),用于創(chuàng)建整個列表。這可能對有大量數(shù)據(jù)得迭代其有負面效應。
++解決方法++:生成器表達式,通過結合列表解析和生成器解決了這個問題。
嵌套列表推導式
例一
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)
嵌套列表推導式
result = [num for nums in all_data for num in nums if num >= 5]
推導式中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]
看完上述內(nèi)容,你們掌握Python中怎么實現(xiàn)列表解析的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。