泛舟湖上清波郎朗
除+和*之外,我为它找到的其他用途是和和或或,但现在我们有any和all来替换这些情况。foldl并foldr确实在Scheme中大放异彩...这是一些可爱的用法:整理清单目标:[[1, 2, 3], [4, 5], [6, 7, 8]]变成[1, 2, 3, 4, 5, 6, 7, 8]。reduce(list.__add__, [[1, 2, 3], [4, 5], [6, 7, 8]], [])数字列表到一个数字目标:[1, 2, 3, 4, 5, 6, 7, 8]变成12345678。丑陋,缓慢的方式:int("".join(map(str, [1,2,3,4,5,6,7,8])))漂亮的reduce方式:reduce(lambda a,d: 10*a+d, [1,2,3,4,5,6,7,8], 0)
隔江千里
找到N个给定列表的交集:input_list = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7]]result = reduce(set.intersection, map(set, input_list))返回:result = set([3, 4, 5])