我有这行代码,但不太明白为什么结果是[False, False]
[False, False]
i :: [Bool] i = filter (\x-> (not x)) [False,False,True,True,True]
我以为它会出来[True,True,True]。真的很感激在这里对结果做一个简短的解释。提前感谢
[True,True,True]
xlpyo6sf1#
根据文件记载filter应用于 predicate 和列表,返回满足 predicate 的元素列表,即[...]:
filter
>>> filter odd [1, 2, 3] [1,3]
定义i的表达式本质上是说:从列表[False, False, True, True, True]中过滤not x等于True的布尔值x
i
[False, False, True, True, True]
not x
True
x
not False
not True
False
结果是[False, False]。
5gfr0r5j2#
因为filter保留了 predicate 为真的元素,所以这些元素现在是False, False。
False, False
2条答案
按热度按时间xlpyo6sf1#
根据文件记载
filter
应用于 predicate 和列表,返回满足 predicate 的元素列表,即[...]:定义
i
的表达式本质上是说:从列表
[False, False, True, True, True]
中过滤not x
等于True
的布尔值x
not False
是True
,因此它被保留。not False
再次是True
,因此这也被保留。not True
是False
,因此丢弃这些条目。结果是
[False, False]
。5gfr0r5j2#
因为
filter
保留了 predicate 为真的元素,所以这些元素现在是False, False
。