NetLogo将列表项嵌套到字符分隔的字符串中

时间:2018-03-08 23:02:08

标签: netlogo

我有一个三重嵌套列表:

[ 
  [ 
    [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

是否有更好的方法可以做到这一点,因为在这种方法中很难保持对列表“解除”的概述。

1 个答案:

答案 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!