我有两个列表,它们的长度总是相同的。第一个是二元的,表示一个代理是否会移动这一轮,第二个包含一组需要做某事的代理,基于第一个列表。就像是:
list1 = [0 1 1 1 0]
list2 = [turtle-1 turtle-2 turtle-55 turtle-6 turtle-8]
Run Code Online (Sandbox Code Playgroud)
我的目标是创建第三个列表,其中仅包含活动海龟。因此,该列表将包括:turtle-2、turtle-55 和turtle-6。做到这一点的最佳方法是什么?
像这样:
map last filter [first ? = 1] (map list list1 list2)
Run Code Online (Sandbox Code Playgroud)
样品运行:
observer> crt 10
observer> set list1 [0 1 1 1 0]
observer> set list2 map turtle [1 2 5 6 8]
observer> show map last filter [first ? = 1] (map list list1 list2)
observer: [(turtle 2) (turtle 5) (turtle 6)]
Run Code Online (Sandbox Code Playgroud)