Py学习  »  Python

如何在Python中从列表中移除sting元素

Kevin Nisbet • 5 年前 • 1455 次点击  

我正在尝试从列表中删除字符串,在选择这些字符串后,我将避免再次获取同一个单词,但当我尝试.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
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55089
 
1455 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Olivier Melançon
Reply   •   1 楼
Olivier Melançon    5 年前

宣布你的名单 功能 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)