我有一个三重嵌套列表:
[
[
[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
是否有更好的方法可以做到这一点,因为在这种方法中很难保持对列表“解除”的概述。
答案 0 :(得分:2)
假设您的列表如下:
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:to-row
扩展名中的csv
原语:
print map [ x -> csv:to-row map [ y -> item 0 y ] x ] a
同样,不确定它是否更直接,但它是另一种方法!
修改强>
正如Seth指出的那样,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!