将 'any' 函数与列表压缩或生成器一起使用的正确语法
correct syntax to use the 'any' function with a list compression or generator
试图弄清楚如何将下面的函数变成使用 any 的函数。这样它就不必构建整个列表然后检查列表。还有比我更有效地处理这个问题的方法吗?(查找所有排列,而不是匹配。
import itertools
def is_merge(s, part1, part2):
for x in [''.join(word) for word in (itertools.permutations(part1+part2))]:
if x == s:
return True
return False
我不确定执行此操作的最有效方法,但使用 any
将如下所示:
import itertools
def is_merge(s, part1, part2):
return any(''.join(word) == s for word in itertools.permutations(part1+part2)):
请注意,我们不需要构建列表(不需要 []
),这使得内存效率更高。这可以在不使用 any
的情况下实现,但是,只需将代码中的 []
替换为 ()
,然后将列表替换为生成器即可。
另请注意,您在 (itertools.p...)
处有一对额外的括号。
试图弄清楚如何将下面的函数变成使用 any 的函数。这样它就不必构建整个列表然后检查列表。还有比我更有效地处理这个问题的方法吗?(查找所有排列,而不是匹配。
import itertools
def is_merge(s, part1, part2):
for x in [''.join(word) for word in (itertools.permutations(part1+part2))]:
if x == s:
return True
return False
我不确定执行此操作的最有效方法,但使用 any
将如下所示:
import itertools
def is_merge(s, part1, part2):
return any(''.join(word) == s for word in itertools.permutations(part1+part2)):
请注意,我们不需要构建列表(不需要 []
),这使得内存效率更高。这可以在不使用 any
的情况下实现,但是,只需将代码中的 []
替换为 ()
,然后将列表替换为生成器即可。
另请注意,您在 (itertools.p...)
处有一对额外的括号。