Gre*_*ill 26
grep返回原始列表中与表达式匹配的元素,同时map返回应用于原始列表的每个元素的表达式的结果.
$ perl -le 'print join " ", grep $_ & 1, (1, 2, 3, 4, 5)'
1 3 5
$ perl -le 'print join " ", map $_ & 1, (1, 2, 3, 4, 5)'
1 0 1 0 1
Run Code Online (Sandbox Code Playgroud)
第一个示例打印列表中的所有奇数元素,而第二个示例打印0或1,具体取决于相应的元素是否为奇数.
FMc*_*FMc 10
我发现思考grep()并map()以最一般的形式思考是有帮助的:
grep {BLOCK} LIST
map {BLOCK} LIST
Run Code Online (Sandbox Code Playgroud)
grep() 是一个过滤器:它返回LIST中BLOCK返回true的项子集.
map()是一个映射函数:将一个值从LIST发送到BLOCK,BLOCK返回一个包含0个或更多值的列表; 所有这些BLOCK调用的组合集将是返回的最终列表map().