Erlang 列表理解,遍历两个列表并排除值
我需要在 Erlang 中生成一组坐标。给定一个坐标,比如 (x,y) 我需要生成 (x-1, y-1), (x-1, y), (x-1, y+1), (x, y-1), (x,y+1)、(x+1,y-1)、(x+1,y)、(x+1,y+1)。基本上除了中间坐标 (x,y) 之外的所有周围坐标。为了生成所有九个坐标,我当前执行以下操作:
[{X,Y} || X<-lists:seq(X-1,X+1), Y<-lists:seq(Y-1,Y+1)]
但这会生成所有值,包括 (X,Y)。如何使用列表理解中的过滤器从列表中排除 (X,Y)?
I need to generate a set of coordinates in Erlang. Given one coordinate, say (x,y) I need to generate (x-1, y-1), (x-1, y), (x-1, y+1), (x, y-1), (x, y+1), (x+1, y-1), (x+1, y), (x+1, y+1). Basically all surrounding coordinates EXCEPT the middle coordinate (x,y). To generate all the nine coordinates, I do this currently:
[{X,Y} || X<-lists:seq(X-1,X+1), Y<-lists:seq(Y-1,Y+1)]
But this generates all the values, including (X,Y). How do I exclude (X,Y) from the list using filters in the list comprehension?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为区分参数和生成的值会有一点帮助:
否则
I think distinguish between parameters and generated values will help a little:
or else
添加
-- [{X,Y}]
可能是最简单的事情。Adding
-- [{X,Y}]
would probably be the easiest thing.