Python 用repeat()重复单个值

Python 用repeat()重复单个值repeat()函数的功能似乎有点奇怪:重复返回单个值。在需要单个值的时候可以用它替代cycle()函数。

选择所有数据和部分数据的差别在于:表达式(x==0 for x in cycle(range(size)))生成序列[True, False, False, ...],用于选取部分数据;表达式(x==0 for x in repeat(0))生成序列[True, True, True, ...],用于选取全部数据。

考虑如下代码:

all = repeat(0)
subset = cycle(range(100))
choose = lambda rule: (x == 0 for x in rule)
# choose(all) or choose(subset) can be used

只需简单修改参数,就可以切换选择全部数据或部分数据。扩展该方法可实现随机选取数据集,如下所示:

def randseq(limit):
    while True:
        yield random.randrange(limit)
randomized = randseq(100)

randseq()函数在指定范围内生成无限长的随机数序列,丰富了的cycle()repeat()两种拣选模式。

不同拣选方法的实现如下:

[v for v, pick in zip(data, choose(all)) if pick]
[v for v, pick in zip(data, choose(subset)) if pick]
[v for v, pick in zip(data, choose(randomized)) if pick]

使用chose(all)chose(subset)或者chose(randomized)可以方便地为后续分析提供输入数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程