python - 检查子字符串匹配并创建新列表
问题描述
这个问题感觉很基本,我必须忽略一些明显的东西。Stack 上有很多与此相关的帖子,但我没有找到完全涵盖这个用例的帖子。
我有两个列表 - 一个带有 URL,一个带有子字符串:
list1 = ['https://', 'http://', 'woof://', 'meow://']
list2 = ['https://google.com', 'stackoverflow.com', 'meow://test.net', 'yahoo.com']
我想创建第三个列表,其中所有值list1
都从 list2 中删除。
例如 -list3 = ['google.com', 'stackoverflow.com', 'test.net', 'yahoo.com']
我努力了:
for x in list1:
for y in list2:
if x in y:
list3.append(y.replace(x, '')
else:
list3.append(y)
这会创建一个包含大量重复项的列表。我可能可以添加逻辑来清理list3
,但我觉得好像必须有一个更 Pythonic 的方式来做到这一点。
我觉得这篇文章与我正在寻找的内容很接近,但并不完全在那里。
解决方案
您可以使用以下理解functools.reduce
:
from functools import reduce
[reduce(lambda x, y: x.strip(y), list1, e) for e in list2]
['google.com', 'stackoverflow.com', 'test.net', 'yahoo.com']
推荐阅读
- javascript - 节点 javascript 需要 js 文件?
- python - 如何在没有请求的情况下在 Scrapy 中屈服?
- ruby - Ruby 2.7 说 URI.escape 已经过时了,用什么代替它?
- node.js - 在 heroku 上部署全栈应用程序时遇到问题
- c - C 编程 - 在数组中查找必要的数字
- sprite-kit - SpriteKit:使用哪个 SKFieldNode 进行排斥,如爆炸?
- tcp - Mosquitto 代理:TCP 重传
- angular - 我想在 Angular 7+ http 调用中从 Microsoft graph 调用 Token API
- python - 如何修复使用熊猫打开 JSON 文件的错误?
- python - Python - 二进制搜索太慢并且计算机崩溃 - 我该如何改进算法