У меня есть два списка, A и B. Я хочу создать третий список, который равен 1, если соответствующая запись в A имеет запись в списке B на конец строки и 0 в противном случае.Использование представления списка для данных меток, которое является общим для двух списков
A = ['Mary Sue', 'John Doe', 'Alice Stella', 'James May', 'Susie May']
B = ['Smith', 'Stirling', 'Doe']
Я хочу, чтобы список понимание, что даст результата
[0, 1, 0, 0, 0]
Имейте в виду, что это частный случай более общей проблемы. Элементы в A могут иметь произвольное пустое пространство и содержать в них произвольное количество слов. Аналогично, элементы в B могут иметь произвольное количество слов. Например
A = [' Tom Barry Stirling Adam', 'Maddox Smith', 'George Washington Howard Smith']
B = ['Washington Howard Smith', 'Stirling Adam']
должен вернуть
[1, 0, 1]
До сих пор я следующее
[1 if y.endswith(x) else 0 for x in B for y in A]
Однако длина возвращаемого списка не размер, что я хочу, потому что это дает 0 или 1 для каждой комбинации элементов A [i], B [j]. Я не интересуюсь решениями, используемыми для циклов, мне нужно понимание списка для скорости.
Будет ли всегда пропущено первое имя и всегда будут подстроены подстроки? –
Нет, могут быть случаи, когда A и B могут содержать одно и то же имя. – deltap
Так что буквально возможны варианты? –