测试列表上的不等式
Testing inequalities on lists
我使用不同的列表原语尝试了几种不同的方法,但找不到一种方法来测试列表中每一项的不等式。例如,我的列表 [1 2 -1 -2]
可以针对 > 0 进行测试,并给出 [1 2 0 0 ]
。有人可以帮忙完成这个简单的任务吗?
有几种方法可以做到这一点,具体取决于您想要的结果。对于您的示例,您可以这样做:
map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] my-list
map
creates a new list by applying the given reporter task to each item of the given list. If you haven't used tasks 在NetLogo 之前,?
代表任务的参数。所以,在这种情况下做:
map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] [1 2 -1 -2]
基本上是:
(list ifelse-value (1 > 0) [ 1 ] [ 0 ]
ifelse-value (2 > 0) [ 2 ] [ 0 ]
ifelse-value (-1 > 0) [ -1 ] [ 0 ]
ifelse-value (-2 > 0) [ -2 ] [ 0 ])
ifelse-value
类似于 ifelse
,只是它 returns 运行的块中的值。
如果,你只是想去掉列表中所有不满足不等式的项目,你可以使用filter
filter [ ? < 0 ] my-list
map
和 filter
是非常强大的记者,但他们需要一点时间才能掌握。但是,如果您需要对列表做一些花哨的事情,您可以使用 map
、filter
或(在更极端的情况下)reduce
来完成。
我使用不同的列表原语尝试了几种不同的方法,但找不到一种方法来测试列表中每一项的不等式。例如,我的列表 [1 2 -1 -2]
可以针对 > 0 进行测试,并给出 [1 2 0 0 ]
。有人可以帮忙完成这个简单的任务吗?
有几种方法可以做到这一点,具体取决于您想要的结果。对于您的示例,您可以这样做:
map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] my-list
map
creates a new list by applying the given reporter task to each item of the given list. If you haven't used tasks 在NetLogo 之前,?
代表任务的参数。所以,在这种情况下做:
map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] [1 2 -1 -2]
基本上是:
(list ifelse-value (1 > 0) [ 1 ] [ 0 ]
ifelse-value (2 > 0) [ 2 ] [ 0 ]
ifelse-value (-1 > 0) [ -1 ] [ 0 ]
ifelse-value (-2 > 0) [ -2 ] [ 0 ])
ifelse-value
类似于 ifelse
,只是它 returns 运行的块中的值。
如果,你只是想去掉列表中所有不满足不等式的项目,你可以使用filter
filter [ ? < 0 ] my-list
map
和 filter
是非常强大的记者,但他们需要一点时间才能掌握。但是,如果您需要对列表做一些花哨的事情,您可以使用 map
、filter
或(在更极端的情况下)reduce
来完成。