цикл for не зацикливается на следующем элементе python - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь перебрать список.Но это становится первым элементом.Это не получает второй элемент.Я не могу понять, что я делаю неправильно.

filte = ['fingerprint','cipher']
dupe = ['cipher','extract']

for val in filte:
    print(val)
    if val in dupe:
        dupe.remove(val)
    else:
        filte.remove(val)

print("filter",filte)
print("dupe",dupe)

вывод, который я получил:

fingerprint
filter ['cipher']
dupe ['cipher', 'extract']

требуемый вывод:

fingerprint
cipher
filter ['cipher']
dupe [ 'extract']

Ответы [ 2 ]

3 голосов
/ 14 мая 2019

Использование set

Ex:

filte = ['fingerprint','cipher']
dupe = ['cipher','extract']

print(list(set(filte) - set(dupe)))  #OR list(set(filte).difference(set(dupe)))
print(list(set(dupe) - set(filte)))

Выход:

['fingerprint']
['extract']

Примечание: Не рекомендуется удалять элементы во время итерации объекта.

0 голосов
/ 14 мая 2019

просто удалите else

filte = ['fingerprint','cipher']
dupe = ['cipher','extract']

for val in filte:
    print(val)
    if val in dupe:
        dupe.remove(val)
        filte.remove(val)

print("filter",filte)
print("dupe",dupe)

Выход:

fingerprint
cipher
filter ['fingerprint']
dupe ['extract']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...