【问题标题】:Listing words randomly without repeating them随机列出单词而不重复它们
【发布时间】:2015-09-03 06:09:50
【问题描述】:

我刚刚从《绝对初学者的 Python 编程》一书中学习了如何用 Python 做列表,遇到了一个挑战,要求随机列出单词而不重复它们。我一直在尝试这样做,因为这本书没有给你答案。到目前为止,这是我的代码:

WORDS = ("YOU","ARE","WHO","THINK")
for word in WORDS:
    newword=random.choice(WORDS)
    while newword==word is False:
          newword=random.choice(WORDS)
          word=newword
          print(word)

虽然看起来很明显,但由于单词在列表中重复,代码并没有成功。

【问题讨论】:

  • 从列表中删除该项目时你 random.choice 吗? (例如通过获取它的索引并使用'del'函数。我相信python还有很多其他更快的方法..)
  • 假设你可以修改列表,使用random.shuffle(words)
  • @trainoasis 您的意思是创建一个新列表并从该列表中随机选择然后删除单词?值得一试。谢谢
  • @LukeWee 是的。我可能添加了一个更好的解决方案,请查看以下内容

标签: python list


【解决方案1】:

您可以将 shuffle 与列表而不是元组一起使用。

import random
lst = ['WHO','YOU','THINK','ARE']
random.shuffle(lst)
for x in lst:
   print x

也可以在这里查看this Q/A。 要将元组转换为列表:Q/A

如果你坚持有一个元组,整个代码:

import random
tuple = ('WHO','YOU','THINK','ARE')
lst = list(tuple)
random.shuffle(lst)
for x in lst:
   print x

【讨论】:

  • 成功了!谢谢您的帮助 !还在尝试你以前的想法:)
【解决方案2】:

将打印的单词添加到不同的数组(例如'usedwords')并在每次打印另一个单词之前循环遍历该数组。
那不是性能,但它是一个小列表......所以它应该可以正常工作
(没有代码示例,它应该在初学者范围内这样做)

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2016-04-07
    • 2013-08-06
    • 2011-06-19
    • 1970-01-01
    • 2017-12-15
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多