@Mister_Mad

Как сравнить генератор со списком?

import itertools
sCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

def combinations():
    for iCombinationLength in range(0, 1+1):
        for aCombination in itertools.product(sCharacters, repeat=iCombinationLength):
            word = ''.join(aCombination)
            yield word

f = open('words.txt', 'r+')
combine_words= combinations()
Lines = f.readlines()
f.seek(0,0)
#удалить перенос строки, если х!= None
Lambda_line = lambda x: x.replace('\n','') if x != None else ''
for words, line in itertools.zip_longest(combine_words, Lines):
    if words!= Lambda_line(line):
        print(Lambda_line(line)+'  ' + words)


combine_words - генератор
Lines - список


Данный код сравнивает один символ из combine_words с одной строкой в Lines

как в цикле сравнить каждый каждый элемент из генератора combine_words в списке Lines, и вывести только те элементы, которых нет в Lines?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
В общем случае можно проделать всякие логические штуки с множествами:
def my_generator(number):
    while number > 0:
        yield number
        number -= 1
        
gen = my_generator(5)  # теперь в gen генератор от 1 до 5
my_list = [0, 1, 3, 5]
print(type(gen))
set_gen = set(gen) # разворачиваем генератор в множество (если, конечно, влезет)
set_my_list = set(my_list)
print(f'gen {set_gen}')
print(f'list{set_my_list}')
print(set_gen - set_my_list)
print(set_my_list - set_gen)
print(set_gen & set_my_list)
print(set_my_list & set_gen)
print(set_gen | set_my_list)
print(set_my_list | set_gen)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы