1. 程式人生 > >潭州課堂25班:Ph201805201 第十五課 叠代器,生成器 (課堂筆記)

潭州課堂25班:Ph201805201 第十五課 叠代器,生成器 (課堂筆記)

update hex color encode dom edi 三元表達式 內置變量 utf8

 推導表達式

li1 = list()
for i in range(10):     #  叠代循環內容
    li1.append(i)
print( li1 )

----》》》    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


li2 =[i for i in range(10)]     #   推導表達式的語法
#  列表元素,  for 循環
print(li2)

----》》》    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


li3= [‘bin‘ for i in range(6)]
# 列表元素, for 循環

print(li3)

----》》》   [‘bin‘, ‘bin‘, ‘bin‘, ‘bin‘, ‘bin‘, ‘bin‘]

   推導表達式 加判斷

for i in range(10):
    if i % 2 == 0:
        li4.append(i)
print(li4)

----》》》》         [0, 2, 4, 6, 8]

li5 = [i for i in range(10) if i % 2 == 0 ]  三元表達式
# 添加的值,for 循環, 判斷/條件 print(li5)
----》》》》 [0, 2, 4, 6
, 8]

叠代器:

1,叠代器協議:對象必須提供一個 next 方法,執行該方法後要麽返回叠代的下一項,要麽就引起 Stoplteration 異常,
以終止叠代,(只能往後走,不能往前找,)

2,可叠代對象:實現了地帶協議的對象,(如何叠代對象內部定義一個 __iter__() 方法)

3,協議是一種約定,可叠代對象實現了叠代協議,python 的內部工具(如 for 循環,sum,min,max海曙)
使用叠代器訪問對象,

for 循環原理:

l = [1,3,4]

for i in l:
print(i)
原理:
將 iter(l) 的值 進行 next 方法

生成器有兩種表現形式:

  生成器表達 式,

      yy =( i for i in range(10) ) 與推導表達 式不同之處在於【】和()

  函數形式

     def test():

      yield 1

      yield 2

    yield 取代了 return

     函數中 只要有 yield,其運行就得到生成器,

     生成器自動實現了叠代器協議,(iter)

 生成器   
#   列表生成式
a = [ x for x in range(10)]
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#   列表生成式
def f (n):
    return n**3
a = [ f(x) for x in range(10)]
生成器:
a = (x for x in range(10))
print(a)
print( next(a) )
print( next(a) )
print( next(a) )
生成器:

a = (x for x in range(10))
for i in a:
    print( i )

生成器:
def y ():
    yield 1



def y ():
    print(‘1‘)
    yield 1
    print(‘2‘)
    yield 2

# a = (x for x in range(10))
# for i in a:
#     print( i )
for i in y():
    print(i)




斐波那契數列:
def f (x):
    n, a, b = 0, 0, 1
    while n < x :
        print( b )
        a, b = b ,a + b
        n += 1

y = int (input(‘‘))
f ( y )

:  yield 的enxt 方法
def f (x):
    n, a, b = 0, 0, 1
    while n < x :
        yield a
        a, b = b ,a + b
        n += 1

g = f (5)
print( g )
print( next(g) )
print( next(g) )
print( next(g) )
print( next(g) )


:send  
def fo ():
    print(‘123‘)
    m = yield 1
    print( m )
    yield 2

n = fo()
n.send ( None )  ##   等於  next(b)
n.send ( ‘abc‘ )



叠代器,:  生成器都是叠代器
l = [1,3,4,5]
b = iter(l)


:  itter:  返回個可叠代對象
l = [1,3,4,5]
b = iter(l)
print(b)
print( next(b) )
for i in b:
    print(i)

  

模塊

1. time 
import time
# time.sleep(2)       # ****
# print(time.time())      #    ****
# print( time.gmtime())    ##   世界標準時間
# print( time.localtime())    ##  電腦裏的時間 ******
# print(time.clock())

st = time.localtime()                              ##   顯示時間格式化   *********
print( time.strftime(‘%Y--%m--%d %H:%M:%S‘,st ))    ##

print(time.strptime(‘2018--04--25 17:33:14‘, ‘%Y--%m--%d %H:%M:%S‘))        
a = time.strptime(‘2018--04--25 17:33:14‘, ‘%Y--%m--%d %H:%M:%S‘)       ##   單獨取出時間如 年
print( a[0])
print( a.tm_year)

print( time.ctime())


import datetime
print( datetime.datetime.now() )

2,random    隨機函數
import random
print( random.random() )
print( random.randint(1,10) )
print( random.choice( ‘hello‘) )
print( random.randrange( 1,10) )

3,os 系統操作 import os print(os.getcwd()) ## 獲取工作目錄 os.chdir(r‘c:\users‘) ## 改變工作目錄 print(os.curdir) ## 當前目錄 print(os.pardir) ## os.makedirs(‘a\\b\\c‘) ## 遞歸創建文件夾 os.mkdir(‘a‘) ## 創建文件夾 os.removedirs(‘a\\b\\c‘) ## 刪除文件夾 os.removedirs(‘a\\b\\c‘) ## 遞歸刪除文件夾 a = os.listdir( r‘E:\pycharm\201804‘ ) ## 展示出目錄裏的全部 print( a ) os.remove( ‘1.png‘ ) ##刪除文件 os.rename(‘set.py‘,‘裝飾器.py‘) ## 重命名文件‘酒文件名’,‘新文件名’ q = os.stat(‘666.py‘) ## 獲取文件信息 print(q) print( os.sep ) ## os.linesep ## 換行 os.environ ## 獲取環境變量 os.path.dirname(‘201804/3.py‘) ## 獲取文件所在的目錄 os.path.join(a,b) ### 路徑拼接 os.path.getatime() ## 最後一次存取時間 os.path.getmtime() ## 最後一次修改時間
4, sys import sys 5, hashlib 加密 import hashlib m = hashlib.md5 ## 加密算法 m.update( ‘hello‘.encode(‘utf8‘)) ##對 hello 加密 print( m.hexdigest() ) ## 加密後. s = hashlib.sha256() ## 加密算法

  

  模塊調用

#  模塊的調用:
import  模塊名
import  模塊名 ,模塊名
from  模塊名 import 方法(函數名)
from  模塊名 import *
from  模塊名 import 方法(函數名)as 新方法

##   包的調用
import 包名 import 模塊名
import 包名.包名  import 模塊名
import 包名.包名.模塊名  import 方法
from 包名 import 模塊名
__file__		相對路徑的內置變量
import os
os.path.dirname( os.path.abspath(__file__) )
	上一級(得到絕對路徑)

if __name__ == ‘__main__‘:

  

潭州課堂25班:Ph201805201 第十五課 叠代器,生成器 (課堂筆記)