我正在尝试仅在标志为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
是一个从大量文件中产生的生成器。
由于
答案 0 :(得分:3)
有很多方法可以实现您的要求。这是一个:
def values(self):
for v in self.items:
while not self.flag:
yield None
yield v
答案 1 :(得分:1)
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)