我正在尝试从列表中删除不包含字母“ 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”这些单词。
答案 0 :(得分:1)
您正尝试在修改列表的同时更改列表。尝试使用过滤的对象创建一个新列表。
mylist = [x for x in mylist if 'a' in x]
答案 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