在比较两个列表时,找到列表2中的项目时,移动到列表1中的下一个项目

2024-04-24 11:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,标题太复杂了,也许例子更简单些。你知道吗

所以我有两张单子:

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

我想要的只是一个脚本,“greps”list2带有list1 items,但当它找到一个ocurence时,它会移动到list1中的另一个item,因此它会在“http://cat1.com”中找到短语“cat”,然后它会检查list[1]item:'dog'。完成后,它应该打印出所有的发现。 我试过使用.find(),但它不是为列表类型的文件设计的。你知道吗


Tags: comhttp标题item例子cat单子dog
3条回答

你可以这样做:

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

你可以试试这个:

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
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的最后一项也少了一个撇号。你知道吗

相关问题 更多 >