Я пытаюсь написать код в списках. Тем не менее, я получил nonetype, когда я это делаю.
Код:
a = ["I", "have", "something", "to", "buy"]
delete = ["I", "have"]
aa = [a.remove(x) for x in delete]
print(aa)
выход:
[None, None]
Ожидаемый результат:
["something", "to", "buy"]
Попробуйте выполнить печать (a) вместо печати (aa)
Когда вы делаете a.remove(x), он удаляет его из массива'a '.
a = ["I", "have", "something", "to", "buy"]
delete = ["I", "have"]
aa = [a.remove(x) for x in delete]
print(a)
Вы не понимаете использование списка "удалить" и/или понимания.
aList.remove(item)
изменить переменную "aList" и не возвращать ничего (почему вы получаете только элементы "Нет"). То, что вы делаете, выполняет итерацию через каждый элемент удаления и вызывает удаление. Фактически, ваш список должен быть результатом, который вы хотите после создания списка aa:
a = ["I", "have", "something", "to", "buy"]
delete = ["I", "have"]
aa = [a.remove(x) for x in delete]
a ["something", "to", "buy"]
aa [None,None]
Правильный способ получить ожидаемый результат без изменения первоначального списка может быть:
aa=[word for word in a if not word in delete]
aa ["something", "to", "buy"]
Вы можете сделать что-то подобное этому концептуально с filterfalse
from itertools import filterfalse
aa = list(filterfalse(lambda x: x in delete, a))
print(aa)
# ['something', 'to', 'buy']
list.remove
изменяет список InPlace и возвращает None. Например:
a = ["I", "have", "something", "to", "buy"]
print(a.remove("I")) # ['have', 'something', 'to', 'buy']
print(a) # None
Если вы действительно хотите сделать это в одной строке, вы можете сохранить свой код. Пока вам не нужен aa, просто напечатайте a.
Вы должны использовать понимание, если:
aa = [x for x in a if x not in delete]
a = ["I", "have", "something", "to", "buy"]
delete = ["I", "have"]
aa = [x for x in a if x not in delete]
print(aa)
['something', 'to', 'buy']