【发布时间】:2021-03-30 12:10:37
【问题描述】:
假设我有两个 Python 列表(一个 2D,一个 1D):
array1 = [['cat', 'dog', 'house', 'mouse'], ['life', 'meaning', 'deep', 'ocean'], ['long', 'happy']]
array2 = ['life', 'meaning']
现在我想通过使用array2 作为我的通配符在array1 中找到匹配的结果。我将其定义为代码中的一个粗略想法(这不是实际代码,只是我想要的一个想法):
for i in range(len(array1)):
if array1[i] == array2 + *:
print(array1[i])
在这种情况下,程序将返回此 array1 元素 [life, meaning, deep, ocean],因为它匹配来自 array2 [life, meaning] + anything 的通配符。
是否可以在 Python 中进行这样的通配符列表匹配?我遇到了函数 fnmatch.filter(names, pattern),虽然我不确定它是否可以将整个数组作为模式。在最坏的情况下,我可以遍历数组并对每个元素进行简单的if 检查,但我认为这不会非常有效。
谢谢。
【问题讨论】:
-
最好将
'###'.join(array2) in '###'.join(array1_items)用于array1 中的项目
标签: python list match wildcard