激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中xrange與yield的用法實例分析

Python中xrange與yield的用法實例分析

2020-12-29 00:11天涯海角路 Python

這篇文章主要介紹了Python中xrange與yield的用法,結合實例形式較為詳細的分析了range和xrange功能、使用方法與相關注意事項,需要的朋友可以參考下

本文實例分析了Pythonxrangeyield的用法。分享給大家供大家參考,具體如下:

range和xrange

Python提供了生成和返回整數序列的內置函數range及xrange,雖然這兩個函數在功能上是差不多的,但其實現原理還是有差別的。range(n, m)返回的是一個從n到(m-1)的連續的整數列表,而xrange(n, m)返回的卻是一個特殊的目的對象,即xrange對象本身.

?
1
2
3
4
5
6
>>> range(1, 5)
[1, 2, 3, 4]
>>> xrange(1, 5)
xrange(1, 5)
>>> type(xrange(1, 5))
<type 'xrange'>

但在python2.x中xrange返回的卻不是一個迭代器,所以 x = xrange(n, m), x.next()會出錯。假如需要返回一個迭代器,需要調用iter(xrange(….))

?
1
2
3
4
5
>>> x = iter(xrange(1, 5))
>>> x.next()
1
>>> x.next()
2

也就是,調用range和xrange程序在運行中占用的內存是不一樣的。使用range,程序將首先生成一個list,然后再隱含調用list的iter獲取元素。而使用xrange,程序在每次循環產生的是一個xrange對象,這個對象是iterable,根據返回的這個xrange對象我們可以獲取元素。

生成器與yield

借助python的生成器,我們可以實現像內置xrange函數的生成器,但這個生成器返回的是一個又浮點型值組成的序列而不是整型序列。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> def frange(start, stop, step=1.0):
  while start < stop:
    yield start
    start += step
>>> frange(1.0, 5.0)
<generator object frange at 0x01343148>
>>> for i in frange(1.0, 5.0):
  print i,
1.0 2.0 3.0 4.0
>>> x = iter(frange(1.0, 5.0))
>>> x.next()
1.0
>>> x.next()
2.0

在python中,在函數體出現一個或者多個yield,這個函數就是生成器(generator)。在調用生成器的時,系統不會執行該生成器函數體。生成器被調用時將返回一個特殊的迭代器對象,這個個對象包含了生成器函數體、函數體的本地變量(包括函數體參數)以及當前的執行位置。

在調用返回的迭代器對象的next方法時,生成器將執行到下一個yield語句。

在執行完yield語句時,函數的執行將被“凍結”,保留執行的當前位置和未經使用的本地變量,并將yield語句的執行結果返回作為next方法的結果。繼續調用next則繼續調用yield,直到函數體運行結束或者執行了return語句(return語句不能含有表達式)。

最常見的,生成器可以用來構建迭代器。假如我們需要一個從1到N,然后從N到1的數字組成的序列,可以使用生成器:

?
1
2
3
4
5
>>> def updown(N):
  for x in xrange(1, N): yield x
  for x in xrange(N, 0, -1): yield x
>>> for i in updown(5):
  print i,

當一個函數需要返回一個列表的時候,使用生成器可能更靈活。生成器可以構建一個誤解的迭代器,返回一個無限的結果序列。更進一步,生成器構建的迭代器執行的是懶計算:只有函數需要時才會計算結果。

所以假如需要對一個序列進行迭代功能,可以考慮迭代器。

希望本文所述對大家Python程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/aademeng/articles/7262670.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色羞羞视频在线观看 | chengrenzaixian| 91成人精品| 亚洲资源在线 | 成人在线视频免费 | 免费在线观看亚洲 | 舌头伸进添的我好爽高潮网站 | 91精品国产乱码久久桃 | 一级黄色电影网站 | 久久蜜臀 | 中文字幕欧美日韩 | 91看片淫黄大片欧美看国产片 | 草碰人人| 三级18视频| 午夜视频观看 | 亚洲码无人客一区二区三区 | 国产一级爱c视频 | 久久久精品视频在线观看 | 日韩毛片一区二区三区 | 免费观看一级黄色片 | 成年毛片| 欧美视频一区二区三区 | 成人免费国产 | av电影在线观看网址 | 永久免费不卡在线观看黄网站 | 国产成人综合在线观看 | 成人不卡在线观看 | 成年人精品视频 | 国产精品视频一区二区噜噜 | 叶子楣成人爽a毛片免费啪啪 | 久草手机在线观看视频 | 在线看一区二区三区 | 免费一级毛片网站 | 久久综合久久精品 | 色网在线视频 | 久久久久日本精品一区二区三区 | 亚洲国产精品一 | 手机在线看片国产 | av在线免费在线观看 | 毛片在线免费观看完整版 | 最新在线黄色网址 |