久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Python 生成器行為

Python generator behaviour(Python 生成器行為)
本文介紹了Python 生成器行為的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

import itertools
ws=[]
subs=[]
set_subs=[]
for i in xrange(int(raw_input())):
    S=raw_input()
    l=len(S)
    subs.append(S[i:j+1] for i in xrange(l) for j in xrange(i,l))

輸入:

2
aab
aac

現(xiàn)在 subs[0]subs[1] 都給了我相同的結(jié)果.

now both subs[0] and subs[1] give me same result.

print list(subs[0])
>>>['a','aa','aac','a','ac','c']
print list(subs[1])
>>>['a','aa','aac','a','ac','c']

list(subs[0]) 應(yīng)該是 ['a','aa','aab','a','ab','b']

我隱約明白為什么會這樣.我該怎么做才能使 subs[0]subs[1] 真正不同.

I vaguely understand why this is happening. What do I do to make subs[0] and subs[1] actually different.

注意:換行

subs.append(S[i:j+1] for i in xrange(l) for j in xrange(i,l))

subs.append([S[i:j+1] for i in xrange(l) for j in xrange(i,l)])

不是一種選擇

推薦答案

http://docs.python.org/reference/expressions.html#generator-expressions

生成器表達(dá)式中使用的變量在以下情況下被延遲計(jì)算為生成器對象調(diào)用 __next__() 方法(在同一像普通發(fā)電機(jī)一樣時(shí)尚).但是,最左邊的 for 子句是立即評估,以便可以看到它產(chǎn)生的錯(cuò)誤在處理生成器的代碼中出現(xiàn)任何其他可能的錯(cuò)誤之前表達(dá).無法立即評估后續(xù) for 子句因?yàn)樗鼈兛赡芤蕾囉谇懊娴?for 循環(huán).

Variables used in the generator expression are evaluated lazily when the __next__() method is called for generator object (in the same fashion as normal generators). However, the leftmost for clause is immediately evaluated, so that an error produced by it can be seen before any other possible error in the code that handles the generator expression. Subsequent for clauses cannot be evaluated immediately since they may depend on the previous for loop.

S[i:j+1] 在您執(zhí)行生成器時(shí)進(jìn)行評估,此時(shí) S 具有最新值.

S[i:j+1] is evaluated when you execute the generator, and at that point S has the latest value.

您可以改用普通的生成器.現(xiàn)在 sssubgen 來說是本地的:

You can use a normal generator instead. Now ss is local to subgen:

import itertools

def subgen(ss):
    l=len(ss)
    for i in xrange(l):
        for j in xrange(i,l):
            yield ss[i:j+1]

subs=[]
for i in xrange(int(raw_input())):
    S=raw_input()
    subs.append(subgen(S))

這篇關(guān)于Python 生成器行為的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區(qū)域周圍繪制一個(gè)矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個(gè)矩形邊界框中應(yīng)用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據(jù)文本方向檢測圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測圖像中矩形的中心和角度)
主站蜘蛛池模板: 亚洲欧美日韩另类 | 亚洲综合视频在线观看 | 日本乱轮视频 | 天天干天天操天天插 | 日韩av一区二区三区四区 | 中文字幕不卡在线观看 | 色av吧| 国内自拍偷拍 | 欧美一区二区三区在线观看 | 国产成人黄色 | 免费黄网站 | 怡红院av | 亚洲精品在线观看视频 | 伊人久久中文字幕 | 国产成人亚洲精品自产在线 | 欧美日韩小视频 | 亚洲天堂网站 | 午夜久久久 | 欧美成人精品欧美一级私黄 | 色综合一区二区 | 黄色一极片 | 不卡免费视频 | 日日夜夜狠狠干 | 日本激情视频 | 欧美日韩免费在线 | 在线观看的av网站 | 日本高清网站 | 免费观看一区二区三区毛片 | 操bbbbb| 一级黄色网 | 成人在线a | 一区二区在线看 | 午夜成人在线视频 | 在线日韩视频 | 九九九国产| 久久依人 | 不卡在线视频 | 99热1| 三级视频在线播放 | 成人精品免费视频 | 欧美一级片免费观看 |