У меня есть два списка в Python list_a
и list_b
. У list_a
есть ссылки на некоторые изображения, и list_b
тоже. 99% предметов одинаковы, но я должен знать это 1%. Все лишние элементы находятся в list_a
, это означает, что все элементы в list_b
находятся в list_a
. Моя первоначальная идея - вычесть все элементы: list_a - list_b = list_c
, где list_c
- мои излишки. Мой код:
list_a = []
list_b = []
list_c = []
arq_b = open('list_b.txt','r')
for b in arq_b:
list_b.append(b)
arq_a = open('list_a.txt','r')
for a in arq_a:
if a not in arq_b:
list_c.append(a)
arq_c = open('list_c.txt','w')
for c in list_c:
arq_c.write(c)
Я думаю, что логика верна, если у меня есть какие-то элементы, код выполняется быстро. Но у меня нет 10 предметов, или 1.000, или даже 100.000. У меня 78.514.022
элементов в моем list_b.txt
и 78.616.777
в моем списке list_a.txt
. Я не знаю стоимость этого выражения: if a not in arq_b
. Но если я выполню этот код, я думаю, что не закончу в этом году.
Мой компьютер имеет 8 ГБ, и я выделяю 15 ГБ для подкачки, чтобы не взорвать мою оперативную память.
У меня вопрос, есть ли другой способ сделать эту операцию более эффективной (быстрее)?
-
list_a
- это ордината, аlist_b
нет. - Каждый элемент имеет этот размер:
images/00000cd9fc6ae2fe9ec4bbdb2bf27318f2babc00.png
- Порядок не имеет значения, я хочу знать профицит.