似乎无法绕过“列表差异”\\\\\\\\运算符

问题描述

| 我在Haskell中听说过“列表差异”
(\\\\)
运算符一词,但仍然不太了解如何解决这个问题。有什么例子或想法吗?     

解决方法

        简而言之,它需要两个列表,遍历第二个,对于每个项目,都从第一个列表中删除同一项目的第一个实例。
> [1..10] \\\\ [2,3,5,8]
[1,4,6,7,9,10]
> [1,2,1,2] \\\\ [2]
[1,2]
> [1,2] \\\\ [2,2]
[1,1]
[1,2]
    ,        
(\\\\)
运算符(和
difference
函数)实现了设置差异,因此,如果有两个列表
a
b
,它仅返回
a
中不在
b
中的那些元素,如图所示:     ,        
xs \\\\ ys
是ѭ9in中所有不在
ys
中的元素。也许列表理解会澄清这一点:
xs \\\\ ys = [ x | x <- xs,x `notElem` ys ]
或者,如果您可以在Haskell中这样做,
xs \\\\ ys = [ x | x `elem` xs,x `notElem` ys ]
这来自集合论的集合差异。基本思想是您要从另一个元素中“减去”一个元素集合,因此是“差异”一词。     ,        假设您有一个事物列表,例如城市。让我们以这个列表为例:
a = [\"London\",\"Brussels\",\"Tokio\",\"Los Angeles\",\"Berlin\",\"Beijing\"]
现在,您要删除欧洲的所有城市。你知道,那些城市在欧洲:
b = [\"Glasgow\",\"Paris\",\"Bern\",\"London\",\"Madrid\",\"Amsterdam\",\"Brussels\"]
要获取
a
中不在欧洲,不在
b
中的城市的列表,可以使用
(\\\\)
a \\\\ b = [\"Tokio\",\"Beijing\"]
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...