1
我有一個列表和一個列表。按內容而不是按順序查找列表
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [8, 11], [9, 3, 5]]
source = [3, 5, 9]
我怎樣才能找到lists
包含的source
不論其爲了所有元素的所有子列表? lists
中有2個這樣的子列表:[3,9,5]和[9,3,5]。
我有一個列表和一個列表。按內容而不是按順序查找列表
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [8, 11], [9, 3, 5]]
source = [3, 5, 9]
我怎樣才能找到lists
包含的source
不論其爲了所有元素的所有子列表? lists
中有2個這樣的子列表:[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]]
UPDATE: 您還可以排序s
並將其分配給一個變量,
t = Enum.sort(s)
然後檢查等價。
Enum.filter(lists, fn x -> Enum.sort(x) == t end)
我相信這將是一個更好的解決方案。
使用的Enum.member
和Enum.all
組合過濾列表:
lists |> Enum.filter(fn x ->
Enum.all?(source, fn y -> Enum.member?(x, y) end)
end)