Elixir 按内容而不是顺序查找列表
我有一个列表和一个列表Elixir 按内容而不是顺序查找列表,elixir,Elixir,我有一个列表和一个列表 lists = [[3, 9, 1], [3, 9, 5], [4, 2], [8, 11], [9, 3, 5]] source = [3, 5, 9] 如何在列表中找到包含源所有元素的所有子列表,而不考虑它们的顺序?列表中有两个这样的子列表:[3,9,5]和[9,3,5]。快速查看列表方法让我来到这里 lists = [[3, 9, 1], [3, 9, 5], [4, 2], [9, 3, 5]] s = [9,3,5] Enum.filter(lists, fn
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [8, 11], [9, 3, 5]]
source = [3, 5, 9]
如何在
列表
中找到包含源
所有元素的所有子列表,而不考虑它们的顺序?列表中有两个这样的子列表:[3,9,5]和[9,3,5]。快速查看列表方法让我来到这里
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [9, 3, 5]]
s = [9,3,5]
Enum.filter(lists, fn x -> Enum.sort(x) == Enum.sort(s) end)
# =>[[3, 9, 5], [9, 3, 5]]
更新:
您还可以排序s
并将其分配给变量
t = Enum.sort(s)
然后检查等价性
Enum.filter(lists, fn x -> Enum.sort(x) == t end)
我认为这将是一个更好的解决方案。使用和的组合来过滤列表:
lists |> Enum.filter(fn x ->
Enum.all?(source, fn y -> Enum.member?(x, y) end)
end)