【发布时间】:2014-08-29 09:18:36
【问题描述】:
我有一个名为 words 的单词列表,我想生成一个包含 100 个名为 pwds 的三个单词元素的列表。
我希望从 words 列表中为 pwds 列表的每个元素随机挑选这 3 个单词,并且我想使用列表理解来执行此操作。
此解决方案有效:
pwds = [random.choice(words)+' '+random.choice(words)+' '+random.choice(words) for i in range(0,100)]
它会生成一个如下所示的列表:['correct horse battery', 'staple peach peach', ...]
但我正在寻找一种防止重复 3 次的方法random.choice(words),所以我尝试了这个:
pwds = [(3*(random.choice(words)+' ')).strip() for i in range(0,100)]
但不幸的是,这种解决方案会使每个元素出现 3 次相同的单词(例如:['horse horse horse', 'staple staple staple', ...]),这可能会发生。
你知道一种方法来选择 3 个随机词不重复 (编辑:“重复”,我的意思是代码重复,而不是随机词重复)?
编辑:我的问题与它被标记为重复的问题不同,因为我在这里寻找使用列表理解。我知道如何生成不同的数字,我只是在寻找具体的方法。
【问题讨论】:
-
@jonrsharpe:这个功能很棒,我想出了这个解决方案:
pwds = [' '.join(random.sample(words,3)) for i in range(0,100)]。但是这个功能可以防止同一个词在同一个元素中出现 2 或 3 次的可能性。
标签: python list random list-comprehension