首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NetLogo嵌套列表项转换为字符分隔字符串

将NetLogo嵌套列表项转换为字符分隔字符串
EN

Stack Overflow用户
提问于 2018-03-09 07:02:08
回答 1查看 46关注 0票数 0

我有一个三重嵌套列表:

代码语言:javascript
复制
[ 
  [ 
    [a b] 
    [c d] 
    ... 
  ] 
  [
    [e f]
    [g h]
    ... 
  ] 
]

我想要一个格式分别为a,c,...e,g,..的字符串

我目前的方法是首先创建一个新列表,其中包含与第一个嵌套列表一样多的项,然后在所述列表中添加列表的第一个项。之后,新的列表被缩减:

代码语言:javascript
复制
let nl ( n-values ( length ( item 0 list) ) [ i -> ( item 0 ( item i ( item 0 list)) ) ] )
reduce [ [a b] -> (word a "," b) ] nl

有没有更好的方法来做到这一点,因为在这种方法中,很难保持列表的“去中心化”的概述。

EN

回答 1

Stack Overflow用户

发布于 2018-03-09 08:29:27

假设你的列表是这样的:

代码语言:javascript
复制
let a ( list ( list [ "a" "b" ] [ "c" "d" ] ) ( list [ "e" "f" ] [ "g" "h" ] ) ) 

我不确定这是否会使跟踪去重做变得更容易,但您可以将一个map嵌套在另一个中,以获得您想要的订单:

代码语言:javascript
复制
  print map [ x -> map [ y -> item 0 y ] x ] a

如果您希望它是一个带有逗号的字符串列表,我喜欢csv扩展中的csv:to-row原语:

代码语言:javascript
复制
print map [ x -> csv:to-row map [ y -> item 0 y  ] x ] a

再说一次,我不确定它是不是更直接,但它是另一种方法!

编辑:

正如赛斯指出的那样,map [ y -> item 0 y ]可以被map first取代-所以修改后的版本看起来像这样:

代码语言:javascript
复制
  print map [ x -> map first x ] a

代码语言:javascript
复制
  print map [ x -> csv:to-row map first x ] a

谢谢Seth!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49183942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档