国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python列表生成式與列表生成器的使用

2020-02-22 23:17:36
字體:
來源:轉載
供稿:網友

列表生成式:會將所有的結果全部計算出來,把結果存放到內存中,如果列表中數據比較多,就會占用過多的內存空間,可能會導致MemoryError內存錯誤或者導致程序在運行時出現卡頓的情況

列表生成器:會創建一個列表生成器對象,不會一次性的把所有結果都計算出來,如果需要獲取數據,可以使用next()函數來獲取,但是需要注意,一旦next()函數獲取不到數據,會導致出現StopIteration異常錯誤,可以使用for循環遍歷列表生成器,獲取所有數據

需要視情況而定,如果數據量比較大,推薦使用生成器

 python2.7中就是range(生成式) 和 xrange(生成器)的區別

列表生成式是快速生成一個列表的一些公式

在列表中存放0~100的數:

普通的列表生成:

numbers=[] for x in range(0,101):   numbers.append(x) print(numbers) 

用列表生成式生成列表:[要放入列表的數據    簡單的表達式1   表達式2]

#x for x in range(0,101) for循環遍歷出來的值,放入列表中 numbers=[x for x in range(0,101)] print(numbers) 

列表中存放0~100的偶數:

普通方法生成列表:

for x in range(0,101):   if x%2==0:     numbers.append(x) print(numbers) 

用列表生成式生成列表:

#for循環遍歷0~101的數字,如果數字對2取余==0,表示是偶數,x放在列表中 numbers=[x for x in range(0,101)if x%2==0] print(numbers) 

找出列表list1=['asd','adf','dafg','acbo']帶有a的字符

普通寫法:

rs_list=[] for s in list1:   if 'a' in s:     rs_list.append(s) print(rs_list) 

列表生成式:

list2=[x for x in list1 if 'a' in x] 

列表生成式支持雙層for循環

list3=[x*y for x in range(0,10) for y in range(20)] print(list3) 

生成器構造實例

# 使用類似列表生成式的方式構造生成器g1 = (2*n + 1 for n in range(3, 6))# 使用包含yield的函數構造生成器def my_range(start, end):  for n in range(start, end):    yield 2*n + 1g2 = my_range(3, 6)print(type(g1))print(type(g2))

輸出結果:

<class 'generator'>
<class 'generator'>

生成器的調用方式

    要調用生成器產生新的元素,有兩種方式: 調用內置的next()方法 使用循環對生成器對象進行遍歷(推薦) 調用生成器對象的send()方法

實例1:使用next()方法遍歷生成器

print(next(g1))print(next(g1))print(next(g1))print(next(g1))

輸出結果:

7
9
11
Traceback (most recent call last):

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乌| 祁东县| 嘉峪关市| 阳江市| 武鸣县| 景泰县| 军事| 张家界市| 通许县| 宜君县| 浦县| 钦州市| 邵东县| 定陶县| 邻水| 盘山县| 陵川县| 峨边| 横山县| 唐海县| 金昌市| 昌乐县| 山阴县| 新泰市| 博湖县| 武宣县| 永丰县| 新化县| 惠州市| 福贡县| 专栏| 徐水县| 扎鲁特旗| 衡阳县| 车致| 宾阳县| 隆子县| 庐江县| 慈溪市| 长沙县| 伊宁市|