gpt4 book ai didi

elixir - 从 Enum 中获取被拒绝/未过滤的元素

转载 作者:行者123 更新时间:2023-12-02 05:14:53 24 4
gpt4 key购买 nike

例如这个列表

list = [1, 2, 3, 4, 4]

我可以像这样过滤掉等于4的元素。

Enum.reject(list, fn item -> item == 4 end)

有什么办法可以获取被拒绝的元素吗?就像[4, 4]

类似于:

rejected = Enum.get_rejected(list, fn item -> item == 4 end)
more_rejected = Enum.get_rejected(list, fn item -> item == 3 end)
remaining = list

我现在可以通过多次迭代来实现这一点,例如:

rejected = Enum.filter(list, fn item -> item == 4 end)
more_rejected = Enum.filter(list, fn item -> item == 3 end)
remaining = Enum.reject(list, fn item -> item != 4 and item != 3 end)

最佳答案

您可以使用Enum.split_with/2来获取过滤和拒绝列表的元组:

iex(1)> list = [1, 2, 3, 4, 4]
[1, 2, 3, 4, 4]
iex(2)> {accepted, rejected} = Enum.split_with(list, fn item -> item == 4 end)
{[4, 4], [1, 2, 3]}
iex(3)> {more_accepted, remaining} = Enum.split_with(rejected, fn item -> item == 3 end)
{[3], [1, 2]}

关于elixir - 从 Enum 中获取被拒绝/未过滤的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52080689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com