如何将数字列表转换为连续数字列表

何塞·阿尔图夫

我正在尝试编写一个可以将数字列表转换为连续数字列表的函数

例如,转换一个数字列表,如下所示:

[1, 2, 3, 4, 10, 11, 12, 20, 21, 30, 32, 42, 43, 44, 45, 48, 49]

进入连续数字列表,例如:

[[1, 2, 3, 4], [10, 11, 12], [20, 21], [30], [32], [42, 43, 44, 45], [48, 49]]

也许我想得太多了,但我似乎无法在长生不老药中提出一个好的解决方案。

欣赏任何正确方向的建议或指示。谢谢!

米哈尔穆斯卡拉

我可以看到两种方法:使用Enum.chunk_while1.5.0 中引入的方法或使用手动递归。

这是一个使用的版本Enum.chunk_while

chunk_fun = fn
  elem, [] -> {:cont, [elem]}
  elem, [prev | _] = acc when prev + 1 == elem -> {:cont, [elem | acc]}
  elem, acc -> {:cont, Enum.reverse(acc), [elem]} 
end
after_fun = fn
 [] -> {:cont, []} 
 acc -> {:cont, Enum.reverse(acc), []} 
end
Enum.chunk_while(list, [], chunk_fun, after_fun)

这是一个手动递归版本:

def chunk_cont([]), do: []
def chunk_cont([elem | list]), do: chunk_cont(list, elem, [])

defp chunk_cont([], elem, acc), do: [Enum.reverse(acc, [elem])]
defp chunk_cont([elem | list], prev, acc) when prev + 1 == elem do
  chunk_cont(list, elem, [prev | acc])
end
defp chunk_cont([elem | list], prev, acc) do
  [Enum.reverse(acc, [prev]) | chunk_cont(list, elem, [])]
end

两个版本都做了类似的事情。他们遍历列表并将当前元素与前一个元素进行比较。如果当前元素是“下一个”元素,我们将它推到累加器上,如果不是,我们反转并发出累加器,并使用新的累加器继续我们的迭代。一旦完成,我们仍然可以在累加器中留下一些东西,如果是这样,我们会发出最后一个元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将非连续数字转换为连续数字?

来自分类Dev

如何将列表的元素转换为单个数字

来自分类Dev

如何将数字列表转换为整数?

来自分类Dev

如何将数字表转换为excel中的数字列表?

来自分类Dev

如何将列表中相等的连续数字替换为nan?

来自分类Dev

如何将数字列表转换为字符串列表?

来自分类Dev

如何将列表的混合列表中的数字字符串转换为int(Python)

来自分类Dev

Python:如何将具有多个数字的多个列表转换为数组?

来自分类Dev

如何将数字列表转换为k中的字符串?

来自分类Dev

如何将列表中的数字和字母字符串转换为整数?

来自分类Dev

如何将数字字符串转换为具有适当间距的数字列表?

来自分类Dev

将数字列表转换为字符

来自分类Dev

将数字列表转换为字符

来自分类Dev

将数字列表转换为代码

来自分类Dev

将数字转换为字符列表

来自分类Dev

如何使用函数方法将数字列表转换为python中当前元素的数字总和列表?

来自分类Dev

递归地将数字列表转换为数字

来自分类Dev

如何将数字转换为字母?

来自分类Dev

如何将数字转换为文本

来自分类Dev

如何将位数转换为数字

来自分类Dev

如何将数字转换为字符?

来自分类Dev

如何将数字转换为字母?

来自分类Dev

如何将数字转换为unicode?

来自分类Dev

如何将货币转换为数字?

来自分类Dev

如何将时间转换为数字?

来自分类Dev

如何将Int列表转换为表示连续范围的元组列表

来自分类Dev

如何将Int列表转换为表示连续范围的元组列表

来自分类Dev

Prolog将字符串列表转换为数字列表

来自分类Dev

将字符串列表转换为数字列表Python

Related 相关文章

热门标签

归档