擅长:python、mysql、java
<p>我怀疑你想随机地选择它们而不需要替换;如果你所做的只是随机选择单词,比如</p>
<pre><code>do until set empty
prick a random word and print it
</code></pre>
<p>它将(a)不终止,(b)平均每1/n次为n个单词重复单词。在</p>
<p>使用Python集是很有吸引力的,但是不方便从集合中随机选择一个项目,因为它不是有序的。(你可能会提出这样一个例子,<code>set#pop</code>会起作用,因为它接受任意的下一个项目,但是如果我在评分,我就不会给予充分的信任。)另一方面,描述是一个集合。在</p>
<p>所以我会这样做:</p>
<p>首先把这些项目放入一个列表中。请注意,您已经将一个包含10行的字符串放入列表中,即您的列表的长度为1。我敢打赌你最好像</p>
^{pr2}$
<p>接下来,使用<code>choice</code>作为</p>
<pre><code>word = random.choice(words)
</code></pre>
<p>打印出来</p>
<pre><code>print word
</code></pre>
<p>把它从名单上删除</p>
<pre><code>words.remove(word)
</code></pre>
<p>把它放进一个循环中,直到你的话用完为止。你会得到这样的信息:</p>
<pre><code>>>> import random
>>> words = ['a', 'b', 'c' ]
>>> while len(words) > 0:
... word = random.choice(words)
... print word
... words.remove(word)
...
b
a
c
</code></pre>
<p>gnibbler指出你也可以</p>
<pre><code>import random
words = [ ... ]
shuf = random.shuffle(words)
for i in shuf:
print i
</code></pre>
<p>但这并不是将列表视为一个集合;它取决于shuffle是否有一个隐式的顺序集。在</p>