2009-12-17 82 views
4

是否有可能在两个列表中按顺序逐项使用列表理解?鉴于A = [1,2,3],B = [4,5,6],得到一些C = [f(1, 4), f(2, 5), f(3, 6)]。换句话说,更直接/有效的方式做[f(U, V) || {U, V} = lists:zip(A, B)].爱尔兰列表理解与两个列表的顺序?

类似的问题去二进制文件,如果给出A = <<1,2,3>>B = <<4,5,6>>。例如,如果你需要异或两个二进制文件,这将非常有用。

回答

8

目前不可能。已在EEP12EEP19中提出。

你最好的选择是实现你自己的递归函数。

1

lists模块中已经有一个高阶函数,它被称为lists:zipwith/3。您的示例场景将以这种方式实现:

lists:zipwith(fun f/2, A, B). 
+0

是的,有压缩两个或三个列表的函数。但是N列表没有通用的解决方案,因为列表理解是。 – Zed 2009-12-19 18:59:26