检查列表元素是否在另一个列表中-Elixir

时间:2018-07-24 12:17:40

标签: elixir

如果我有两个列表:

第一个列表=> [1,2,3]
第二个列表=> [3,4,5]

我希望它返回true,因为它们都包含3吗?如果将3替换为6,则将返回false,因为没有元素匹配。

当前尝试

Enum.member?(first_list, fn(x) -> x == second_list end)

Ecto查询:

user_teams = from(
  t in MyApp.Team,
  left_join: a in assoc(t, :accounts),
  where: p.owner_id == ^user.id or (a.user_id == ^user.id and t.id == a.project_id)
) |> Repo.all

current_user_teams = from(
  t in MyApp.Team,
  left_join: a in assoc(t, :accounts),
  where: t.owner_id == ^current_user.id or (a.user_id == ^current_user.id and p.id == a.project_id)
) |> Repo.all

当前修正:

Enum.any?(user_projects, fn(p) -> p in current_user_projects end)

3 个答案:

答案 0 :(得分:4)

Fragment fragment = getActivity().getSupportFragmentManager().findFragmentByTag("MyFragment"); if(fragment != null && fragment instanceof MyFragment) ((MyFragment) fragment).someMethod(); else Log.e(TAG, "cannot change tab its null..."); Enum.any?/2运算符配合使用(这只是调用in的一种较短形式):

Enum.member?/2

答案 1 :(得分:4)

如果列表很大,则可以使用class ClassB(A): def __init__(self): print "I am ClassB" self.varB = 0 def methodB(self): if self.varB == 0: # Error here self.methodA() else: print "Method not executed" 检查这些列表是否不相交:

MapSet

如果您想知道什么是交集(两组元素都相同),则可以使用:

iex(1)> xs = [1, 2, 3]
[1, 2, 3]
iex(2)> ys = [3, 4, 5]
[3, 4, 5]
iex(3)> not MapSet.disjoint?(MapSet.new(xs), MapSet.new(ys))
true

答案 2 :(得分:2)

您可能首先是在十字路口,然后验证它是否为空:

case for i <- [1,2,3], i in [3,4,5], do: i do
  [] -> false
  [_|_] -> true
end