Итерация списков элементов в двух циклах for

1

У меня есть список как

A = ['loans', 'mercedez', 'bugatti', 'a4', 'trump', 'usa', 'election', 'president', 'galaxy', '7s', 'canon', 'macbook', 'beiber', 'spiderman', 'marvels', 'ironmen']

а также

B = [ 'кредиты', 'сеть', 'Вашингтон', 'козырь', 'канон', 'Лондон']

Когда я сделал что-то, чтобы получить слова из B которых нет в списке A:

for i in A:
    for j in B:
        if j not in i:
            print (j)

Он дает цикл циклов как: -

network
washington
trump
canon
london
loans
network
washington
trump
canon
london
loans
network
washington
trump
canon
london
loans
network
washington
trump
canon
london
.......
.......
.......

Почему так? Все, что я хочу вернуть

network
washington
london
  • 0
    В своем коде вы проверяете, находится ли элемент в B не внутри элемента в A и не в A
Теги:
arrays
list
python-3.x

4 ответа

3
Лучший ответ
for i in B:
    if i not in A:
        print (i)
  • 0
    Подскажите пожалуйста, что именно я сделал не так?
  • 0
    например, четвертый цикл, вы проверяете, не находится ли «козырь» внутри «ссуды», что верно. Вы должны проверить, не внутри ли списка, внутри ли строки одного элемента
Показать ещё 1 комментарий
2

Используйте метод not in методе:

not_in_list = [b for b in B if b not in A]

for n in not_in_list:
    print(n)

Для большей ясности ваш исходный код будет работать, если он написан следующим образом:

for b in B:
    unique = True
    for a in A:
        if b == a:
            unique = False
            break

    if unique == True:
        print(b)
  • 1
    В ответ на ваш вопрос на ответ @ Remi: нет необходимости перебирать 2 списка, чтобы найти элемент, которого нет в другом списке. Вы просто должны пройти через B один раз и использовать b not in A
  • 0
    Я повторяю только по списку B, изменится ли он, если вы строите свой массив с помощью for вместо цикла for ?
Показать ещё 2 комментария
0

Попробуй это,

A = ['loans', 'mercedez', 'bugatti', 'a4', 'trump', 'usa', 'election', 'president', 'galaxy', '7s', 'canon', 'macbook', 'beiber', 'spiderman', 'marvels', 'ironmen']
B = ['loans', 'network', 'washington', 'trump', 'canon', 'london']
print('\n'.join([i for i in B if i not in A]))

выход:

network
washington
london
0

Использовать set разницу

print(set(B) - set(A))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню