中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用列表推導式的示例分析

發布時間:2022-03-22 10:52:16 來源:億速云 閱讀:139 作者:小新 欄目:開發技術

這篇文章主要介紹了python使用列表推導式的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

 使用列表推導式
一個列表推導式包含以下幾個部分:
一個輸入序列
一個表示輸入序列成員的變量
一個可選的斷言表達式
一個將輸入序列中滿足斷言表達式的成員變換成輸出列表成員的輸出表達式

num = [1, 4, -5, 10, -7, 2, 3, -1]

filtered_and_squared = []for number in num:  if number > 0:

    filtered_and_squared.append(number ** 2)

print filtered_and_squared# [1, 16, 100, 4, 9]

而如果使用filter、lambda和map函數,則能夠將代碼大大簡化:

num = [1, 4, -5, 10, -7, 2, 3, -1]

filtered_and_squared = map(lambda x: x ** 2, filter(lambda x: x > 0, num))print filtered_and_squared

# [1, 16, 100, 4, 9]

## 更簡化的一種寫法 

num = [1, 4, -5, 10, -7, 2, 3, -1]

filtered_and_squared = [ x**2 for x in num if x > 0]print filtered_and_squared

# [1, 16, 100, 4, 9]

列表推導也可能會有一些負面效應,那就是整個列表必須一次性加載于內存之中,這對上面舉的例子而言不是問題,甚至擴大若干倍之后也都不是問題。但是總會達到極限,內存總會被用完。

針對上面的問題,生成器(Generator)能夠很好的解決。生成器表達式不會一次將整個列表加載到內存之中,而是生成一個生成器對象(Generator objector),所以一次只加載一個列表元素。

生成器表達式同列表推導式有著幾乎相同的語法結構,區別在于生成器表達式是被圓括號包圍,而不是方括號:

num = [1, 4, -5, 10, -7, 2, 3, -1]

filtered_and_squared = ( x**2 for x in num if x > 0 )

print filtered_and_squared# <generator object <genexpr> at 0x00583E18>for item in filtered_and_squared:

  print item# 1, 16, 100 4,9

這比列表推導效率稍微提高一些,讓我們再一次改造一下代碼:

num = [1, 4, -5, 10, -7, 2, 3, -1]def square_generator(optional_parameter):

  return (x ** 2 for x in num if x > optional_parameter)print square_generator(0)# <generator object <genexpr> at 0x004E6418># Option Ifor k in square_generator(0):  print k# 1, 16, 100, 4, 9# Option IIg = list(square_generator(0))print g# [1, 16, 100, 4, 9]

除非特殊的原因,應該經常在代碼中使用生成器表達式。但除非是面對非常大的列表,否則是不會看出明顯區別的。 再來看一個通過兩階列表推導式遍歷目錄的例子:

import os

def tree(top):  for path, names, fnames in os.walk(top):    for fname in fnames:

      yield os.path.join(path, fname)for name in tree('C:\Users\XXX\Downloads\Test'):

  print name

感謝你能夠認真閱讀完這篇文章,希望小編分享的“python使用列表推導式的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁德市| 阿克苏市| 光泽县| 仪陇县| 靖西县| 民县| 佛教| 莱芜市| 吐鲁番市| 绥芬河市| 钟山县| 陇南市| 新闻| 南康市| 威信县| 威宁| 淄博市| 汕头市| 尼玛县| 玉田县| 铁岭县| 万年县| 衡东县| 于都县| 溧阳市| 财经| 白朗县| 尚义县| 黔西| 西畴县| 武胜县| 三台县| 西乌珠穆沁旗| 桐乡市| 城步| 沙洋县| 资讯| 四平市| 灵台县| 苍山县| 阳江市|