map、reduce、filter、shuffle
map
对指定序列的每一个元素执行指定映射函数,返回映射后的序列
map(function, sequence) -> sequence
reduce
对指定序列的元素进行累积,返回累积的最终结果
reduce(function, sequence) -> value
filter
对指定序列的元素进行过滤,返回过滤后的序列
filter(function, sequence) -> sequence
shuffle
将指定序列中的元素随机排序,时间复杂度O(N)
shuffle(sequence)
具体实现:
import random
def knuth_shuffle(list):
# no extra space
for i in range(len(list) - 1, 0, -1):
p = random.randrange(0, i + 1)
list[i], list[p] = list[p], list[i]
return list
r = knuth_shuffle([1, 2, 2, 3, 3, 4, 5, 10])
print(r)
蓄水池抽样
从未知长度(非常大)的序列中随机取k个元素,保证每个元素被取出的概率相等
先把读到的前k个对象放入“水库”,从第k+1个对象开始,以k/(k+1)的概率选择该对象,以k/(k+2)的概率选择第k+2个对象,以此类推,以k/m的概率选择第m个对象(m>k)。如果m被选中,则随机替换水库中的一个对象。最终每个对象被选中的概率均为k/n。
参考:
Python特殊语法:filter、map、reduce、lambda
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: map、reduce、filter、shuffle
文章字数: 342
本文作者: Jun
发布时间: 2019-03-27, 16:16:00
最后更新: 2019-03-27, 17:08:09
原始链接: http://yoursite.com/2019/03/27/map、reduce、filter、shuffle/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。