Python - сравнить значения двух списков и длины - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть два списка, list1 и list2. Для каждого значения в list1 мне нужно найти элементы в list2, которые удовлетворяют двум следующим условиям:

  • Элемент list1 должен быть подстрокой любого элемента list2 (например, 'ABC' в list1 является подстрокой 'ABCDE' в list2)

  • Длина элемента list1 должна быть короче, чем длина элемента list2 («ABC» короче, чем «ABCDE»).

Затем я хочу передать любой квалифицирующий элемент в list2 в отдельный list3. У меня много проблем с синтаксисом для реализации этого.

Вот что я пробовал до сих пор:

for elem in list1:
    if elem in list2 and len(elem) < len(range(list2)):
        list3.append(list2)

Я понимаю, что "len(range(list2))" неправильно, но это настолько близко, насколько я могу понять, что я считаю правильным. Я не понимаю, как «извлечь» определенные элементы, которые соответствуют требованиям, и добавить их в мой список.

Любая помощь будет принята с благодарностью:)

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018
list1 = ["ABC", "CD", "XX", "AA", "GG"]    
list2 = ["BABCD", "CC", "XY", "AAA", "GG"]
list3 = []
for item in list1:
    for other_item in list2:
        if item in other_item and len(item) < len(other_item):
            list3.append(item)

Выход:

>>> list3
['ABC', 'CD', 'AA']
0 голосов
/ 12 сентября 2018

Вы можете использовать понимание списка:

list3 = [i for i in list1 if any(i in j and len(i) < len(j) for j in list2)]

Например, если:

list1 = ['ABC', 'BCD', 'ABCDE', 'DEF']
list2 = ['ABCDE', 'XYZ']

, то с указанным кодом list3 станет:

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