Есть ли питонный способ перебрать разницу двух списков? - PullRequest
4 голосов
/ 03 октября 2019

Моя цель состоит в том, чтобы перебрать разницу между двумя списками

Я попытался код bodge написать a - b следующим образом

for i in a:
        if i in b:
            continue
        #statements

Мне было интересно, есть ли более питонический/ эффективный способ сделать это.

Ответы [ 3 ]

6 голосов
/ 03 октября 2019

Вы можете использовать наборы , чтобы увидеть разницу:

a = [1, 2, 3, 4, 5]
b = [2, 4, 6]

a = set(a)
b = set(b)

for i in a.difference(b):
    print(i)

# even supports the arithmetic syntax :D
for i in a - b:
    print(i)
0 голосов
/ 03 октября 2019

С точки зрения наборов, элементы в a, но не в b будут представлять собой разность наборов, поэтому это будет

for i in set(a).difference(b):
    # statements
0 голосов
/ 03 октября 2019

То, что у вас есть, хорошо. Если вы возражаете против оператора continue, вы можете выполнить итерации по генератору:

for i in (x for x in a if x not in b):

, хотя это, возможно, хуже с точки зрения читабельности.

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