python - Python列表通配符与另一个列表匹配
问题描述
假设我有两个 Python 列表(一个 2D,一个 1D):
array1 = [['cat', 'dog', 'house', 'mouse'], ['life', 'meaning', 'deep', 'ocean'], ['long', 'happy']]
array2 = ['life', 'meaning']
现在我想array1
通过使用array2
我的通配符来找到匹配的结果。我将其定义为代码中的粗略想法(这不是实际代码,这只是我想要的想法):
for i in range(len(array1)):
if array1[i] == array2 + *:
print(array1[i])
在这种情况下,程序将返回此array1
元素[life, meaning, deep, ocean]
,因为它匹配来自 的通配符array2
[life, meaning] + anything
。
是否可以在 Python 中进行这样的通配符列表匹配?我遇到了 function fnmatch.filter(names, pattern)
,尽管我不确定它是否可以将整个数组作为模式。在最坏的情况下,我可以遍历数组并对if
每个元素进行简单的检查,但我认为这不会非常有效。
谢谢你。
解决方案
我假设您正在使用字符串。
array1 = [["cat", "dog", "house", "mouse"], ["life", "meaning", "deep", "ocean"], ["long", "happy"]]
array2 = ["life", "meaning"]
[all(x in y for x in array2) for y in array1]
# returns [False, True, False]
然后,您可以继续获取True
布尔数组中任何元素的索引并继续。
推荐阅读
- html - 如何在图像元素内使用指向 SVG 文件的链接?
- visual-foxpro - 在 Visual FoxPro 中分配空括号有什么作用?
- mysql - 我可以毫不犹豫地通过 GET 请求发送哪些数据?
- flutter - Flutter:如何实现工具栏搜索视图以显示 2 种状态之间的数据
- python - 如何只打印或获得第二个结果
- vue.js - 动态注入或更新 Vue 依赖项
- cron - Crontab 如何禁用电子邮件
- python - 即使使用正确的语法和正确的 poutput,python 3.0 中的 eof
- kotlin - Kotlin-multiplatform:ShadowJar gradle 插件创建空 jar
- python - IndexError:Pygame 中的列表索引超出范围和回溯错误