Я пытаюсь проверить, присутствуют ли имена или инициалы в одном списке в другом списке.
У меня есть 2 списка, как:
l1 = ["JACK", "JOHN", "A", "PAUL", "STEVE"]
l2 = ["J", "ANN", "JACK", "STEVEN", "P"]
В приведенном выше списке «JACK» и «JOHN» из l1 совпадают с начальным «J» в l2, а «JACK» из l1 совпадает с «JACK» в l2. Также «A» из l1 совпадает с «ANN» в l2. Аналогично с «PAUL» и «P», но «STEVE» и «STEVEN» не совпадают. Таким образом, результат должен быть «Не полное совпадение».
Но если у l1 не было "STEVE" и было бы похоже:
l1 = ["JACK", "JOHN", "A", "PAUL"]
Поскольку "STEVE" или "S" не существует в l2, а все остальные элементы совпадают, результатом должно быть "Full match".
Таким образом, я должен иметь все элементы в l1 как полностью присутствующие или как инициалы в l2, но наличие всех элементов из l2 в l1 необязательно.
Я пробовал код из других похожих вопросов, но ни один из них не дал точного результата. Они выводят положительный результат, так как они либо соответствуют только инициалам всех элементов, либо даже соответствуют «STEVE» с «STEVEN», что мне не нужно.
Я полагаю, что это может быть сделано условным оператором, который проверяет все элементы в любом списке, имеющие длину 1, с первым индексом всех элементов в другом списке (так что любой инициал в любом списке сопоставляется со всеми полными именами ); и полные строки только из l1 с полными строками в l2 (так что полные имена только из l1 сопоставляются с полными именами в l2)
Пожалуйста, будьте немного поучительнее, так как я только начинаю изучать питон как мой первый язык программирования.
РЕДАКТИРОВАТЬ: По просьбе Devesh я вставляю ниже весь код, который я пытался.
for elem in l2 or elem in l1:
if (len(elem)) == 1:
print('yes')
if any(elem[0] for elem in l1) == any(elem[0] for elem in l2):
print("yes")
for elem in l1 or elem in l2:
if l1[elem][0] == l2[elem][0]:
print("yes")
for elem in l1:
if len(elem) == 1:
print([elem for elem in l1 if any(elem in x for x in l2)])
print([elem for elem in l2 if any(elem in x for x in l1)])
for b in l2:
for a in l1:
if a in b or b in a:
present.add(b)
break
else:
notPresent.add(b)
print(present)
print(notPresent)