<p>一种选择是拥有一组副本,并使用生成器:</p>
<pre><code>import random
first_name = ['tony', 'adam', 'agustin', 'branden','stan']
last_name = ['smith', 'stark', 'wlliams']
def generate_random_names(first, last):
duplicates = set()
while True:
f = random.choice(first)
l = random.choice(last)
if (f, l) in duplicates:
continue
duplicates.add((f, l))
yield f, l
for i, (f, l) in zip(range(1, 11), generate_random_names(first_name, last_name)):
print('{}. {} {}'.format(i, f, l))
</code></pre>
<p>印刷品:</p>
<pre><code>1. stan wlliams
2. adam wlliams
3. tony wlliams
4. adam stark
5. tony stark
6. branden wlliams
7. stan stark
8. agustin smith
9. branden stark
10. agustin wlliams
</code></pre>
<p>另一个版本使用<code>itertools.product</code>和<code>random.sample</code>:</p>
<pre><code>import random
from itertools import product
first_name = ['tony', 'adam', 'agustin', 'branden','stan']
last_name = ['smith', 'stark', 'wlliams']
print(random.sample([*product(first_name, last_name)], 10))
</code></pre>
<p>印刷品:</p>
<pre><code>[('stan', 'wlliams'), ('tony', 'stark'), ('agustin', 'smith'), ('agustin', 'wlliams'), ('tony', 'smith'), ('tony', 'wlliams'), ('stan', 'stark'), ('branden', 'stark'), ('stan', 'smith'), ('branden', 'wlliams')]
</code></pre>