Python3 生成器

来源:http://www.cnblogs.com/Infi-chu/archive/2017/10/17/7684494.html
-Advertisement-
Play Games

Python 生成器 ...


  1 '''
  2 列表生成式
  3 '''
  4 
  5 # a1 = [x for x in range(10)]
  6 # a2 = [x*2 for x in range(10)]
  7 # print(a1)
  8 # print(a2)
  9 #
 10 # def fun1(x):
 11 #     return x**3
 12 # a3 = [fun1(x) for x in range(10)]
 13 # print(a3)
 14 #
 15 # # 列表生成式
 16 # # 取值方式
 17 # b = ['asd',8,9,10]
 18 # w,x,y,z = b
 19 # print(w,x,y,z)
 20 # print(b)
 21 #
 22 #
 23 # # 生成器
 24 # c = (x*2 for x in range(10))        # c是生成器對象
 25 # print(c)        # <generator object <genexpr> at 0x00000286BEF21CA8>
 26 # # print(next(c))  # 等價於 c.__next__(),在Python2中等價於 c.next()
 27 # # print(next(c))
 28 # # print(next(c))
 29 # # print(next(c))  # 超出範圍會報錯
 30 #
 31 # # 生成器是可迭代對象
 32 # import time
 33 # for i in c:     # for 對c進行了一個next()的功能
 34 #     print(i)
 35 #     # time.sleep(1)
 36 
 37 '''
 38 生成器的兩種創建方式
 39 1.(x*2 for x in range(10))
 40 2.yield
 41 '''
 42 
 43 # def fun2():
 44 #     print('###')    # 此列印沒有顯示
 45 #     yield 1
 46 # print(fun2())       # fun2()是生成器對象
 47 #
 48 # def fun3():
 49 #     print('###')
 50 #     yield 1
 51 #
 52 #     print('asd')
 53 #     yield 2
 54 #
 55 #     return None
 56 #
 57 # c1 = fun3()
 58 # # next(c1)      # next()被返回1
 59 # # next(c1)      # next()被返回2
 60 #
 61 # for i in fun3():
 62 #     print(i)    # ‘###’, 1, ‘asd', 2
 63 #                 # 此時的1,2是上面的返回值
 64 
 65 
 66 '''
 67 什麼是可迭代對象,可迭代對象擁有iter方法
 68 '''
 69 
 70 # list1 = [1,2,3]
 71 # list1.__iter__()
 72 #
 73 # tup1 = (1,2,3)
 74 # tup1.__iter__()
 75 #
 76 # disc1 = {'asd':123}
 77 # disc1.__iter__()
 78 
 79 
 80 
 81 # # 斐波那契數列
 82 # # 0 1 1 2 3 5 8 13 21 34
 83 # def fun4(max):
 84 #     q,before,after = 0,0,1
 85 #     while q < max:
 86 #         print(after)
 87 #         before,after = after,before+after
 88 #         q += 1
 89 # fun4(10)
 90 # print(fun4(8))
 91 
 92 # # 使用生成器創建斐波那契數列
 93 # def fun5(max):
 94 #     q,before,after = 0,0,1
 95 #     while q < max:
 96 #
 97 #         yield before
 98 #         before,after = after,before+after
 99 #         q = q + 1
100 # z = fun5(8)
101 # print(z)
102 # print(next(z))
103 # print(next(z))
104 # print(next(z))
105 # print(next(z))
106 # print(next(z))
107 
108 
109 '''
110 send 方法
111 '''
112 # def fun5():
113 #     print('a1')
114 #     a = yield 1
115 #     print(a)
116 # 
117 #     yield 2
118 # x = fun5()
119 # x1 = x.send(None)       # 等價於next(x)
120 #                         # 第一次send前沒有next,只能傳一個send(None)
121 # h = x.send('aaaaaaaaa')
122 # print(h)
123 
124 '''
125 send 比 next 多一個功能,是可以傳入一個參數給其中的變數
126 
127 '''

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • spring boot / cloud (十九) 併發消費消息,如何保證入庫的數據是最新的? 消息中間件在解決非同步處理,模塊間解耦和,和高流量場景的削峰,等情況下有著很廣泛的應用 . 本文將跟大家一起討論以下其中的異常場景,如題. 場景 在實際工作中,大家可能也都遇到過這樣的需求 : 如 : 系統A ...
  • /p 問題描述 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用電腦生成了N個1到1000之間的隨機整數(N≤100),對於其中重覆的數字,只保留一個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 ...
  • 一、CURL小結 個人將歸納curl請求總結成三步 1、創建curl 句柄(curl_init),並設置參數(curl_setopt)(打開冰箱) 2、執行請求(curl_exec),處理返回的數據 (把大象塞進去) 3、關閉curl(curl_close),釋放所有資源(關上冰箱) 其實如果代碼看 ...
  • JavaWeb筆記 一、servlet 真正helloServlet所在的位置 HelloServlet.java package net.zixue.servlet; import jdk.nashorn.internal.runtime.arrays.IteratorAction; import ...
  • 一、序 畢業已經兩年了,曾經在學校學習的知識早已還給老師了,已經很久沒有好好學習了。雖然曾經也是高收入群體,但是因為從此再也不寫代碼了,覺得人生都沒有樂趣了,所以果斷離職了.....但是看著身邊越來越多的技術大牛和高收入人群和之前對比落差太大,心中未免有些不甘,所以重新撿起被遺忘的知識。曾子曰:“吾 ...
  • 1 ''' 2 生成器都是迭代器,迭代器不一定是生成器 3 ''' 4 5 # list1 = [1,2,3,4,5] 6 # p1 = iter(list1) # 等價於__iter__() 7 # print(p1) 8 # print(next(p1)) 9 # print(next(p1))... ...
  • STL
    模板和標準模板庫(STL) 一、模板的起源 變數四要素:類型、名稱、值、地址 數據類型:存儲形式、編碼格式、運算規則、訪問方式 int a = 0; // 補碼 float b = 0; // 階碼 char c = 'A'; // ASCII char_t d = 'A'; // UCS 4 in ...
  • 概述 我們都知道面向對象有四個基本特性:抽象、封裝、繼承、多態。這四個特性,概括起來可以這麼理解,抽象、封裝、繼承是多態的基礎,多態是抽象、封裝、繼承的表現。多態,是Java中非常重要的一個部分,所以今天來談一下多態(Polymorphism)。 什麼是多態 不同類的對象對同一消息作出不同的響應就叫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...