簡體   English   中英

Elixir中的紅寶石和操作員是什么?

[英]What's the ruby & operator in Elixir?

像這樣:

list1 = [1,2,3,4,5]  
list2 = [2,3,6]  
list1 & list2 = [2,3]

我需要找到重復列表,即list1list2常用項。

您正在尋找的功能是Set.intersection / 2

iex> Set.intersection(Enum.into([1, 2, 3 ,4 ,5], HashSet.new), Enum.into([2, 3, 6], HashSet.new))
[2, 3]

請注意,轉換為集合意味着不允許重復:

Enum.into([1, 2, 3 ,2 ,5, 3], HashSet.new)
HashSet<[2, 3, 1, 5]>

另請注意,訂單未得到維護:

iex>Enum.into([1, 2, 3 ,4 ,5, 6], HashSet.new) |> Set.to_list
[2, 6, 3, 4, 1, 5]

不確定elixir是否有與list s類似的&運算符。

但是,你可以使用--運算符兩次來實現你的結果:

iex> list1
# => [1, 2, 3, 4, 5]
iex> list2
# => [2, 3, 6]
iex> list3 = list1 -- list2
# => [1, 4, 5]   
iex> final_list = list1 -- list3
# => [2, 3] # this is your desired result

你也可以在一行中完成:

iex> list1 -- (list1 -- list2)
# => [2, 3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM