переходить к следующему элементу в list1, когда найден элемент из list2, когда сравниваются оба списка - PullRequest
0 голосов
/ 24 декабря 2018

Извините за сложный заголовок, возможно, пример будет проще.

Итак, у меня есть два списка:

list1 = ['cat', 'dog', 'donkey']
list2 = ['http://cat1.com', 'http://cat2.com', 'http://dog1.com', http://dog2.com']

Все, что мне нужно, это скрипт, который "greps" list2 с элементами list1 но когда он находит одно вхождение, он перемещается к другому элементу в списке list1 , поэтому он находит фразу "cat" в "http://cat1.com",", а затем проверяет элемент списка [1]: "dog".он закончил, он должен распечатать все свои выводы. Я пытался использовать .find (), но он не предназначен для типов файлов списка.

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018
list1 = ['cat', 'dog', 'donkey']
list2 = ['http://cat1.com', 'http://cat2.com', 'http://dog1.com', 'http://dog2.com']
output = [l2 for l2 in list2 for l1 in list1 if l1 in l2]
print(output)

Также в вашем последнем элементе вашего списка2 отсутствует апостроф.

0 голосов
/ 24 декабря 2018

Вы можете сделать что-то вроде этого, возможно:

list1 = ['cat', 'dog', 'donkey']
list2 = ['http://cat1.com', 'http://cat2.com', 'http://dog1.com', 'http://dog2.com']

for animal in list1:
     for site in list2:
             if animal in site:
                     print(f'{animal} : {site}')
                     break                     

Вывод:

cat : http://cat1.com
dog : http://dog1.com
0 голосов
/ 24 декабря 2018

Вы можете попробовать это:

list1 = ['cat', 'dog', 'donkey']
list2 = ['http://cat1.com', 'http://cat2.com', 'http://dog1.com', 'http://dog2.com']

for item in list1:
    for url in list2:
        if item in url:
            print url
            break

Вывод:

http://cat1.com
http://dog1.com

Более продвинутый подход может быть:

urls = filter(lambda x: x in list2, list1)
print urls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...