擅长:python、mysql、java
<p>您可以创建一个迭代器作为类成员。开始时在<code>None</code>处初始化,如果<code>None</code>,则在整个列表上使用<code>iter</code>。你知道吗</p>
<p>调用时,返回<code>next</code>元素。在<code>StopIteration</code>异常(到达列表末尾时为正常情况)中,创建另一个随机无序的列表,并将其包装在新的iterable中:</p>
<pre><code>import random
class Foo:
messages = [
'Nice cat',
'What a lovely cat',
'Wow, great picture',
'Amaizing, I am in love <3',
'Beautiful',
'I have same cat :)'
]
def __init__(self):
self.__msgiter = None
def randomComments(self):
if self.__msgiter:
try:
return next(self.__msgiter)
except StopIteration:
pass
self.__msgiter = iter(random.sample(self.messages,len(self.messages)))
return next(self.__msgiter)
f = Foo()
for _ in range(10):
print(f.randomComments())
</code></pre>
<p>一个输出:</p>
<pre><code>What a lovely cat
Wow, great picture
I have same cat :)
Amaizing, I am in love <3
Nice cat
Beautiful
Nice cat
What a lovely cat
Beautiful
I have same cat :)
</code></pre>