假设我有两个 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 中进行这样的通配符列表匹配? 我遇到过函数 fnmatch.filter(names, pattern)
,虽然我不确定它是否可以将整个数组作为一个模式。在最坏的情况下,我可以循环遍历数组并对每个元素进行简单的 if
检查,但我认为这不会非常有效。
谢谢。
答案 0 :(得分:0)
我假设您正在处理字符串。
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
元素的索引并继续。