2013-03-12 59 views
2

我想找到更好的寻找替代验证码:如何(优雅地)一次迭代两个列表?

(def x (range 1 10)) 
(def y '(0 4 3 5 1 2 7 3 11)) 
(for [i (range 0 (count y))] [(nth x i) (nth y i)]) 

如果我已经有了我可以简单地

(def z (for [i (range 0 (count y))] [(nth x i) (nth y i)])) 
(for [[x y] z] [x y]) 

你能找到一些更好的寻找替代以前的结果呢?

示例使得短而易于阅读。如果您修改它以执行更复杂的操作,则第一个示例可能会停止可读。

回答

8

您可以使用map

(map vector x y) 
+0

如果y大于x不再那么你就必须与尼尔斯垫X,以获得相同的行为OP的代码。但既然这个例子有x和y相同的长度,这将起作用。 – Alex 2013-03-12 21:21:00

+0

Scratch - 如果y更长,OP的代码将抛出异常。无论如何,这是一个更安全的选择。 – Alex 2013-03-12 21:22:29