Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 有类似Python的版本吗';什么是长生不老药柜台?_Elixir - Fatal编程技术网

Elixir 有类似Python的版本吗';什么是长生不老药柜台?

Elixir 有类似Python的版本吗';什么是长生不老药柜台?,elixir,Elixir,您可以使用计数器计算事件的发生次数。此外,您还可以从如下所示的iterable创建计数器: >>> from collections import Counter >>> Counter("asdasdafasdasdasd") Counter({'a': 6, 's': 5, 'd': 5, 'f': 1}) >>> Counter([1,2,3,2,1,2,2,5]) Counter({2: 4, 1: 2, 3: 1, 5: 1})

您可以使用
计数器
计算事件的发生次数。此外,您还可以从如下所示的iterable创建计数器:

>>> from collections import Counter
>>> Counter("asdasdafasdasdasd")
Counter({'a': 6, 's': 5, 'd': 5, 'f': 1})
>>> Counter([1,2,3,2,1,2,2,5])
Counter({2: 4, 1: 2, 3: 1, 5: 1})

不直接,但您可以使用
Enum.reduce/3

Enum.reduce values, %{}, fn(x, acc) ->
  Map.update(acc, x, 1, &(&1 + 1))
end

不直接,但您可以使用
Enum.reduce/3

Enum.reduce values, %{}, fn(x, acc) ->
  Map.update(acc, x, 1, &(&1 + 1))
end

我想你可以使用Enum模块中的
group_by
来实现类似的功能。这几乎是Enum模块中的
group_by
的翻版,我想你可以使用Enum模块中的
group_by
来实现类似的功能。这几乎是Enum模块中的翻版,只是因为人们经常想在长生不老药中使用管道,同样的思想在管道中的一个不完美的实现:
values |>String.to_char_list |>Enum.reduce(%{},fn(x,acc)->Map.update(acc,x,1,&(&1+1))end)
正如我所说的,不完美是因为映射有字符代码而不是字符。否则可以。我也做了同样的操作,但使用了List.foldl。更糟糕吗?如果有少量不同的元素,可以使用
List.foldl
。由于您正在累积一个列表,因此需要在每次传递时遍历整个累加器以查找上一个计数。与地图查找相比,这可能效率低下。正如@OnorioCatenacci示例所示,初始值不应该是1而不是0吗?正如doc所说,“如果密钥不存在,则插入给定的初始值。”@OnorioCatenacci也可以使用
String.graphemes
,这仅仅是因为人们经常想在Elixir中使用管道,这是管道中相同思想的不完美实现:
values |>String.to_char|u list |>Enum.reduce(%{},fn(x,acc)->Map.update acc,x,1&(&1+1))结束)
正如我所说的,不完美是因为地图上有字符代码而不是字符。否则就可以了。我也这样做了,但使用了List.foldl。更糟糕吗?如果你有少量不同的元素,可以使用
List.foldl
。因为你在积累一个列表,所以你需要遍历整个累加器每次通过查找上一个计数。与映射查找相比,这可能效率低下。正如@OnorioCatenacci示例所示,初始值不应该是1而不是0吗?正如文档所说,“如果键不存在,则插入给定的初始值。”@OnorioCatenacci还可以使用
String.graphemes