91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

Python解析式與生成器的介紹

本篇內容主要講解“Python解析式與生成器的介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python解析式與生成器的介紹”吧!

成都創新互聯公司主營彌渡網站建設的網絡公司,主營網站建設方案,手機APP定制開發,彌渡h5微信小程序開發搭建,彌渡網站營銷推廣歡迎彌渡等地區企業咨詢

1.列表解析式
  • 列表解析式是將數據全部存儲在內存中一并返回;

# 將lst1的元素+100,導入到lst2
lst1 = list(range(10))
lst2 = []
for item in lst1:
    lst2.append(item+100)
print(lst2)   #輸出:[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
#使用列表解析式解析上面例子
new_lst1 = [item + 100 for item in lst1]
print(new_lst1 )  #輸出:[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
  • 列表解析是Python迭代機制的一種應用,它常用于實現創建新的列表,因此用在[]中;

  • 使用列表解析式,編譯器會優化,不會因為簡寫而影響效率,反而優化提升效率,減少代碼量,可讀性強,工作量降低,減少出錯;

  • 帶條件判斷的列表解析式;

#判斷item滿足被2整除,被3整除,list2和list3的寫法都是一樣的
list1 = list(range(100))
list2 = [item + 100 for item in list1 if item %2 == 0 and item %3 ==0]
print(list2)  #輸出:[100, 106, 112, 118, 124, 130, 136, 142, 148, 154, 160, 166, 172, 178, 184, 190, 196]
list3 = [item + 100 for item in list1 if item % 2 == 0 if item % 3 == 0]
print(list3)  #輸出:[100, 106, 112, 118, 124, 130, 136, 142, 148, 154, 160, 166, 172, 178, 184, 190, 196]
  • 帶循環的列表解析式;

lst = []
for i in range(2):
    for j in range(2):
        lst.append((i, j))
print(lst)  #輸出:[(0, 0), (0, 1), (1, 0), (1, 1)]
#將上述代碼解析
lst = [(i, j) for i in range(2) for j in range(2)]
print(lst)  #輸出:[(0, 0), (0, 1), (1, 0), (1, 1)]
  • 帶循環和條件判斷的列表解析式;

lst = [(i,j) for i in range(10) if i>2 for j in range(10,15) if j>13]
print(lst)  #輸出:[(3, 14), (4, 14), (5, 14), (6, 14), (7, 14), (8, 14), (9, 14)]
2.集合解析式
set1 = {(x,x+1) for x in range(10)}
print(set1)
#輸出:{(0, 1), (1, 2), (7, 8), (6, 7), (4, 5), (5, 6), (8, 9), (9, 10), (2, 3), (3, 4)}
  • 集合解析式和列表解析式用法一樣,只是集合解析式使用的是{}花括號;

3.字典解析式
# 字典解析式
dict1 = {'{}'.format(x):x for x in range(10)}
print(dict1)   #輸出:{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
# 輸出三個元素,因為會被key會被覆蓋
dict2 = {x:y for x in range(3) for y in range(3)}
print(dict2)  #輸出:{0: 2, 1: 2, 2: 2}
# 上式等價于
dict3 = {}
for x in range(3):
    for y in range(3):
        dict3[x] = y
print(dict3)   #輸出:{0: 2, 1: 2, 2: 2}
  • 字典解析式也是使用{}花括號括起來的;

  • 因為字典有key-value鍵值對,所以使用字典解析式時key會自動去重;

4.什么是生成器
g = (item for item in range(10))
print(g)  #輸出: at 0x0095BBF0>
print(next(g))  #輸出:0
print(next(g))  #輸出:1
....
  • 生成器表達式:返回一個對象,這個對象只有在需要的時候才產生結果;

  • 生成器的特點是按需計算,惰性求值,最大可能的節約內存空間;

  • 生成器是是單迭代器對象,一次只能產生一個值,且每個值只能取一遍,超過次數會報錯;

  • 生成器和迭代器的相同之處在于都可以通過for循環取值,因此都是可迭代對象;

5.生成器操作
g = (item for item in range(10))
print(g)  #輸出: at 0x0095BBF0>
value1 = next(g)
print(value1)  #輸出:0
value2 = next(g)
print(value2)  #輸出:1
print('*'*100) 
for item in g:
    print(item)  #輸出:2,3,4,5,6,7,8,9
  • 通過next獲取值:如果取值的次數超過生成器對象值的長度,則會報錯;

  • 通過for循環取值:如果生成器對象沒有值的時候,for循環會通知迭代,所以不會報錯;

到此,相信大家對“Python解析式與生成器的介紹”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!


網頁名稱:Python解析式與生成器的介紹
標題網址:http://www.yuzhuanjia.cn/article/pgeish.html
主站蜘蛛池模板: 91亚洲一区二区在线 | 国产91白丝在线播放 | 丰满少妇午夜片 | 99久久九九国产精品国产 | 福利网站导航 | 东京热一区二区免费高清av | av日韩国产在线 | 午夜免费时刻 | 丰满熟女人妻一区二区三 | 国产av日韩一区二区三区精品 | 99久久亚洲国| 91人妻中文字幕无码专区 | 97亚洲综合色成在线观看 | 东京热毛片无码dvd一二三区 | 国产a∨视频精品老师视频 国产a∨天天免费观看美女 | 91精品久久久久久人妻无码 | h无码无修动漫在线观看 | gay熟女狠狠噜天天噜日日噜视 | www.精品久久| 97亚洲综合色成在线 | 高清无码在线不卡 | 高清无码爱爱免费视频 | 99国产精品白浆无码流出 | 粉嫩无码一区二区三区 | 福利视频入口 | 91久久香蕉国产线看 | 午夜成片| 丰满年轻岳欲乱中文字幕电影 | av黄片国产一| 91人妻无码精品一区二区三区 | 午夜视频在 | WWW国产精品内射老师 | 91精品天美精东蜜桃传媒入口 | 成人黄色免费网址 | 99久久精品久久久 | 99久久国产主播综合精品 | 高清女同学巨大乳在线 | 东京热影音 | 天美在线观看 | 国产69久9在线 | 99久久婷婷免费国产综合精品 |