给出清单:
'( [:a [:a1 :a2]] [:b [:b1 :b2 :b3]] )
Run Code Online (Sandbox Code Playgroud)
如何生成列表:
'( [:a :a1] [:a :a1] [:b :b1] [:b :b2] [:b :b3] )
Run Code Online (Sandbox Code Playgroud)
(这是一种元素扩展笛卡尔积与1级扁平化相结合)
我能想到的最好的是:
(apply concat (map #(for [v (second %)] (vector (first %) v)) TheList))
Run Code Online (Sandbox Code Playgroud)
这看起来过于复杂; 实现它的更惯用的方法是什么?
此外,当尝试在列表中执行这种元素扩展笛卡尔积 - 产品时,应该考虑哪些函数系列?(我完全不知道如何描述它).
另一个:
(for [[x inner-xs] theList
inner-x inner-xs]
[x inner-x])
Run Code Online (Sandbox Code Playgroud)
for
对于嵌套集合和平面结果非常有用.
归档时间: |
|
查看次数: |
128 次 |
最近记录: |