Python學習心得(四) yield和三元運算以及lambda表達式
阿新 • • 發佈:2017-07-26
意思 next 數值 blog div 生產 生成 英文 返回
1.yield 英文意思生產、生成的意思,在Python中帶有yield的函數被稱為生成器(Generator)
‘‘‘ for i in range(10000) #生成10000個元素的List 值越大,運行中占用的內存就會越大 for j in xrange(10000) #xrange返回的不是List,而是一個iterable的對象 每次叠代返回下一個數值,占用很小的內存空間 ‘‘‘ def readFileByYield(xpath): with open(xpath,‘rb‘) as ty: for line in ty.readlines(): yield line #每執行一次yield,語句就會中斷,並返回一個叠代值 #for循環中會自動調用 next() for line in readFileByYield(‘D:\wangyi.py‘): print line
2.Python三元運算 語法格式:為真時的結果 if 判定條件 else 為假時的結果
1 if 10>9 else 0 def threeElementExpression(a,b): return a - b if a > b else abs(a - b) print threeElementExpression(1,5) print threeElementExpression(10,5)
3.lambda表達式,它能實現函數速寫的功能,相當於匿名函數,而用def聲明的函數是有名稱的,比如:
lambdatest = lambda x:x**2 for i in range(1,5): print lambdatest(i) list_lambda = range(1,10) #列表中的每個元素加1 print map(lambda a: a+1, list_lambda) #返回列表中的偶數 print filter(lambda a: a % 2 == 0, list_lambda) #返回列表中所有元素相乘的結果 print reduce(lambda a, b: a * b, list_lambda)
Python學習心得(四) yield和三元運算以及lambda表達式