Erlang - 交错的简单方法
交错三个数据集的简单/有效的方法是什么?
Data1 = [<<5>>,<<6>>,<<7>>],
Data2 = [<<5>>,<<6>>,<<7>>],
Data3 = [<<5>>,<<6>>,<<7>>].
最终结果:
Final = [<<5>>, <<5>>, <<5>>, <<6>>, <<6>>, <<6>>, <<7>>, <<7>>, <<7>>]
我确信它就像
[X || X <- [Data1, Data2, Data3]]
Whats the easy/efficient way of interleaving three data sets..
Data1 = [<<5>>,<<6>>,<<7>>],
Data2 = [<<5>>,<<6>>,<<7>>],
Data3 = [<<5>>,<<6>>,<<7>>].
End Result:
Final = [<<5>>, <<5>>, <<5>>, <<6>>, <<6>>, <<6>>, <<7>>, <<7>>, <<7>>]
Im sure its like
[X || X <- [Data1, Data2, Data3]]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
模块功能:
shell 中相同:
当然你可以使用
lists
模块:Module function:
Same in shell:
And of course you can do it with
lists
module:您可以编写自定义
zip
函数来完成此操作。只要输入的长度相同,该函数就可以正常工作。处理不同长度的输入需要一些修改。像这样的东西:
这样称呼它:
另请参阅:标准库函数
列表:zip3
。You can write a custom
zip
function to accomplish this.This function will work fine as long as the length of the inputs are the same. Dealing with inputs of varying length will take some tinkering. Something like this:
Call it thus:
See also: standard library function
lists:zip3
.这是我的尝试。有了这个,您可以添加任意数量的数据集,只需将它们添加到列表中即可。它还会考虑列表的大小是否不同。如果二进制数据可能很大或者它是一个非常常见的函数,那么使用新的二进制模块可能比将二进制数据分解为 1 字节列表更有效。
你正在考虑列表理解
[{X,Y,Z} || X<-数据1,Y<-数据2,Z<-数据3]]
这更能产生所有与顺序无关的可能性。
Here's my go at it. With this you can add as many Data sets as you want, just add them to a list. It also takes into account if the lists are different sizes. Probably more efficient to use the new binary module instead of breaking down the binary data into 1 byte lists if the binary data can be large or it's a very common function.
you're thinking of list comprehensions
[{X,Y,Z} || X <-Data1, Y<-Data2,Z<- Data3]]
which is more to generate all possibilities where order doesn't matter.