写一个不可读的'名单

时间:2015-03-21 14:18:50

标签: python

我正在尝试仅在标志为True时才能使列表可读。如果标志为False,则列表将显示为空。我想知道这是不是正确的方法呢?

def values(self):
    for v in self.items:
        if self.flag:
            yield v
        else:
            yield None

我不认为这是正确的,因为如果标志是False,光标是否会继续沿着self.items前进,直到它到达终点?当标志为False时,我希望光标“冻结”,这样当下次翻转时,可以返回标志最后为True时返回的元素。

注意:self.items是一个从大量文件中产生的生成器。

由于

2 个答案:

答案 0 :(得分:3)

有很多方法可以实现您的要求。这是一个:

def values(self):
    for v in self.items:
        while not self.flag:
            yield None
        yield v

答案 1 :(得分:1)

当flag为my_lst_时,

False将显示为空;如果flag为True,则显示为迭代器。

l = [1, 2, 3]    

class C(object):    
    def __init__(self):
        self.flag = False

    def f(self):
        if self.flag is True:
            for i in l:
                yield i
        else:
            return []    

inst = C()
my_lst = inst.f()

print('\nFlag is False')
for i in my_lst:
    print(i)

# Set the flag to true and create new iterator.
inst.flag = True
my_lst = inst.f()

print('\nFlag is True')
for i in my_lst:
    print(i)