在NetLogo中将海龟属性字符串转换为列表的方法
NetLogo逗号分隔字符串转列表解决方案
你需要把海龟的逗号分隔字符串属性转换成对应列表,其中duration还要转成整数类型,直接用NetLogo内置的字符串和列表工具就能实现,不用写复杂的循环或子字符串操作,具体代码如下:
完整实现代码
to setup clear-all create-turtles 1 [ ; 初始的逗号分隔字符串属性 set names "LE1123, LE1345, LE5366, LE9998" set roles "farmer, agent, priest, boxer" set duration "424, 654, 755, 976" ; 转换names为字符串列表:拆分后去除每个元素的空白 set names map trim split names ", " ; 转换roles为字符串列表,逻辑同上 set roles map trim split roles ", " ; 转换duration为整数列表:先拆分去空白,再转成数值类型 set duration map read-from-string (map trim split duration ", ") ; 打印验证转换结果 print (word "转换后的names列表: " names) print (word "转换后的roles列表: " roles) print (word "转换后的duration整数列表: " duration) print (word "duration元素的类型(以第一个为例): " type-of item 0 duration) ] end
关键函数解释
split 分隔符 字符串:把字符串按指定分隔符拆分成列表,这里用", "(逗号加空格)作为分隔符,刚好匹配你属性里的格式。map trim 列表:遍历列表中的每个元素,去除元素前后的空白字符,避免出现带空格的无效元素。map read-from-string 字符串列表:把列表中的每个字符串形式的数字转换成对应的数值类型(这里是整数),完美满足duration的类型需求。
如果需要给所有海龟批量转换属性,只需要把转换代码放到ask turtles [...]块里即可:
ask turtles [ set names map trim split names ", " set roles map trim split roles ", " set duration map read-from-string (map trim split duration ", ") ]
内容的提问来源于stack exchange,提问作者DeMelkbroer
相关产品推荐
相关产品推荐

