неправильный вывод. удалить элемент из списка1, если существует в списке2 - PullRequest
1 голос
/ 17 апреля 2020

Код для удаления элементов, присутствующих в другом списке.

Неверный вывод

Код записан здесь:

s=['a@gmail.com','b@gmail.com',]
for e in l:
    if e in s:
        l.remove(e)
print(l)```

Showing wrong output

**output should be =['c@gmail.com','d@gmail.com']**
**but output coming is ['b@gmail.com','c@gmail.com','d@gmail.com']** 

Ответы [ 3 ]

4 голосов
/ 17 апреля 2020

удаление элементов из списка, пока вы выполняете итерацию с for l oop, это не лучшая практика и приведет вас к неожиданному поведению, вы можете использовать понимание списка:

l = [e for e in l if e not in s]
0 голосов
/ 17 апреля 2020
l1 = ['a','b','c','d']
l2 = ['a','b']
l3 = []
for i in l1:
    if i not in l2:
        l3.append(i)

print(l3)

вывод:

['c', 'd']

проверьте длину списка и l oop соответственно.

0 голосов
/ 17 апреля 2020

Если сохранение порядка элементов не имеет значения, это приведет к гораздо более быстрым временам

result = list(set(l) - set(s))

Примечание для решения выше с пониманием списка от @ kederra c, если вы просто установите (-ы), это будет будь также быстрее чем без него

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...