如何按字母从列表中删除多个字符串?

时间:2019-04-07 07:59:09

标签: python python-3.x

我正在尝试从列表中删除不包含字母“ a”的多个字符串。

我尝试使用函数删除列表中不含字母“ a”的每个单词

myList = ['advertisement', 'start', 'clever', 'billowy', 'melted', 'charge', 'longing', 'disgusting', 'phobic', 'carry', 'chew', 'big', 'mist', 'warn', 'faint']

def new_list(myList):
    for word in myList:
        if 'a' not in word:
            myList.remove(word)
    return myList

print(new_list(myList))

>>> ['advertisement', 'start', 'billowy', 'charge', 'disgusting', 'carry', 'big', 'warn', 'faint']

我希望它删除所有不带字母“ a”的单词,但仍会输出“ billowy”,“令人作呕”和“ big”这些单词。

4 个答案:

答案 0 :(得分:1)

您正尝试在修改列表的同时更改列表。尝试使用过滤的对象创建一个新列表。

mylist = [x for x in mylist if 'a' in x]

在此处查看更多方法:How to remove items from a list while iterating?

答案 1 :(得分:1)

我个人认为, 最佳实践是创建新列表并返回它,而不是从现有列表中删除元素。 所以,

def new_list(myList):
    newlist = []
    for word in myList:
        if 'a' in word:
            newlist.append(word)
    return newlist

答案 2 :(得分:0)

您可以通过在函数中初始化新列表来实现。

myList = ['advertisement', 'start', 'clever', 'billowy', 'melted', 'charge', 'longing', 'disgusting', 'phobic', 'carry', 'chew', 'big', 'mist', 'warn', 'faint']

def new_list(myList):
    l = []
    for word in myList:
        if 'a' in word:
            l.append(word)
    return l

print(new_list(myList))

答案 3 :(得分:0)

您不能修改当前正在迭代的列表,请尝试制作该列表的另一个副本。尝试使用切片运算符复制列表。

for word in myList[:]:
    if 'a' not in word:
        myList.remove(word)
return myList