我有一个三重嵌套列表:
[
[
[a b]
[c d]
...
]
[
[e f]
[g h]
...
]
]我想要一个格式分别为a,c,...和e,g,..的字符串
我目前的方法是首先创建一个新列表,其中包含与第一个嵌套列表一样多的项,然后在所述列表中添加列表的第一个项。之后,新的列表被缩减:
let nl ( n-values ( length ( item 0 list) ) [ i -> ( item 0 ( item i ( item 0 list)) ) ] )
reduce [ [a b] -> (word a "," b) ] nl有没有更好的方法来做到这一点,因为在这种方法中,很难保持列表的“去中心化”的概述。
发布于 2018-03-09 08:29:27
假设你的列表是这样的:
let a ( list ( list [ "a" "b" ] [ "c" "d" ] ) ( list [ "e" "f" ] [ "g" "h" ] ) ) 我不确定这是否会使跟踪去重做变得更容易,但您可以将一个map嵌套在另一个中,以获得您想要的订单:
print map [ x -> map [ y -> item 0 y ] x ] a如果您希望它是一个带有逗号的字符串列表,我喜欢csv扩展中的csv:to-row原语:
print map [ x -> csv:to-row map [ y -> item 0 y ] x ] a再说一次,我不确定它是不是更直接,但它是另一种方法!
编辑:
正如赛斯指出的那样,map [ y -> item 0 y ]可以被map first取代-所以修改后的版本看起来像这样:
print map [ x -> map first x ] a和
print map [ x -> csv:to-row map first x ] a谢谢Seth!
https://stackoverflow.com/questions/49183942
复制相似问题