为了避免再次得到相同的单词,我试图从列表中删除字符串,但是当我尝试.remove或.pop时,并不能删除该单词。为什么会这样,我该如何排序?
我还尝试创建该单词的副本,以防该单词在从函数返回该单词之前被删除,这是否会影响该单词(如果已选择)?
谢谢您的帮助,您可能会告诉我,我是编程新手!
def choose_a_word_easy(): # function for choosing random easy word.
words = ['ant', 'bee', 'cat', 'dog', 'egg', 'hat', 'golf', 'jelly', 'king', 'bird', 'hot', 'cold', 'fish', 'log',
'dad', 'mum', 'goal', 'help', 'file', 'neat', 'car', 'moon', 'eye', 'tree', 'rice', 'ice', 'speed', 'rat',
'water', 'rain', 'snow', 'spoon', 'light', 'gold', 'zoo', 'oil', 'goat', 'yoga', 'judo', 'japan', 'hello']
pick = random.choice(words) # randomly choose any word from the list.
# p1 = pick
words.remove(pick)
return pick
通过在函数内声明列表choose_a_word_easy
,每次调用都会创建一个新列表。您希望在每个调用中都可以重用相同的列表。为此,可以在函数范围之外创建列表并将其作为参数传递。
words = ['ant', 'bee', 'cat', 'dog', ...]
def pick_and_remove(lst):
pick = random.choice(lst)
lst.remove(pick)
return pick
pick = pick_and_remove(words)
print(pick) # 'bee'
print(words) # ['ant', 'cat', 'dog', ...]
请注意,通过随机选择一个索引并将其弹出,可以使您的函数效率更高一些。
def pick_and_remove(lst):
i = random.randrange(len(lst))
return lst.pop(i)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句