python - 我如何将列表与python中的另一个列表匹配
问题描述
我想在python中找到另一个列表值的第一个列表值,我在其中使用match
andset
和findall
其他方法,但它在我的代码中效果不佳。
在这里,我想匹配始终pattern
以longlist
and 模式开头的那个。
pattern = ['aaa','bbbb','ccc']
longlist = ['aaa845','bbbbPP44','XXX10','aaa420','ccc1','jjj7000','PPPP']
for i in longlist: # longlist is json data, So this line required. After we can do it any code
if filter(pattern.match, i):
print(i)
# other tried
if set(pattern) & set(longlist):
print(i)
期望输出:aaa845, bbbbPP44, aaa420, ccc1
谁能建议没有多次FOR
循环迭代和最快性能的最佳编码风格?
解决方案
如果找到匹配项,您可以使用列表推导来any
使内部循环短路。
这将检查 pattern 中的任何单词是否“包含”在longlist
.
>>> pattern = ['aaa','bbbb','ccc']
>>> longlist = ['aaa845','bbbbPP44','XXX10','aaa420','ccc1','jjj7000','PPPP']
>>> [i for i in longlist if any(j in i for j in pattern)]
['aaa845', 'bbbbPP44', 'aaa420', 'ccc1']
相反,如果您希望单词longlist
“以”模式中的任何单词“开始”,那么您需要像这样更改条件。
>>> [i for i in longlist if any(i.startswith(j) for j in pattern)]
['aaa845', 'bbbbPP44', 'aaa420', 'ccc1']
在您给定的示例中,两者都恰好产生相同的结果。
推荐阅读
- sas - MCMC 永远在 SAS 中运行
- python - Powershell/命令行 - 关闭受密码保护的共享
- python - 如何从外部类访问类方法
- javascript - 无法比较 MongoDb 中的时刻日期
- excel - 如何找到一个包含数字括号的单元格 - 例如(1)
- ios - 有没有办法将扩展应用到所有 UIKit 类?
- google-apps-script - getRowHeight() 在启用文本换行时返回默认行高而不是实际高度
- java - 为什么在这段代码(IDE Eclipse)中没有抛出 EOFException?
- c# - 删除 linq 链的元素
- html - 如何在网格布局中垂直对齐 div?