cycle函数python_Python 用cycle()循环迭代

Python 用cycle()循环迭代,cycle()函数重复循环一组值,可用它循环数据集标识符对数据集进行分组。

还可以用它解决简单的fizz-buzz问题,关于该问题的多种解法可参考http://rosettacode.org/wiki/FizzBuzz,基于它的一些有趣变体可参考https://projecteuler.net/problem=1。

可以利用cycle()函数生成一系列True和False值,如下所示:

返回结果是无限长的布尔值序列:[True, False, False, True, False, False, ...]或[True, False, False, False, False, True, False, False, False, False, ...]。

如果用zip()处理有限个数值序列和上面两个标识序列,可以得到一个三元组序列,第一部分是数值,另外两个是分别代表是否为3的倍数或5的倍数的标识值。注意这里要引入一个有限的可迭代对象来生成目标数据的上限。这样的一系列值及其标识值如下:

这样就得到了一个生成器对象,可以用list(multipliers)查看其中包含的结果值,如下所示:

这样就可以拆解三元组了,用一个过滤器选出倍数值,舍弃其他数值:

for从句将每个元组拆分成两部分:数值i和标识值multipliers,如果标识值含真值,则保留该数值,否则将其舍弃。

该函数在EDA中很有用。

我们经常要处理大型数据集的样本,在最初的清洗和建模阶段,应使用小数据集,然后在更大的数据集上进行测试。使用cycle()函数可以方便从大型数据集中选取记录。给定总体数据大小 N_p 与样本集大小 N_s,可算出循环体的大小。

假设用csv模块解析数据,则可以轻松生成子数据集,已知循环体大小cycle_size和两个打开的文件source_file和target_file,生成子数据集的方法如下:

首先基于拣选因子cycle_size和cycle()函数生成拣选函数。比如总体数据集大小为10 000 000,拣选数据集大小为1000,即选取了1/10 000的数据。这里我们假设打开数据文件时,这些代码都嵌在with语句中。

接着用基于cycle()函数的生成器表达式和取自CSV读取器的源数据文件过滤数据。由于用chooser()函数和写数据函数都是非严格的,这类处理消耗内存很少。

稍后会介绍如何使用compress()、filter()和islice()函数实现相同的功能。

用这个方法还能将非标准CSV文件转换为标准CSV文件。只要数据解析器返回格式一致的元组,并通过写文件方法定义好consumer函数,就能用简单的脚本实现许多清洗和过滤操作。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python迭代器可以是无限的循环。这意味着迭代器对象可以无限地生成下一个元素,而不会停止。一个常见的例子是使用itertools模块中的`cycle`函数来创建一个无限迭代器。这个函数接受一个可迭代对象作为参数,并在迭代过程中不断重复这个对象的元素。 以下是一个示例代码,展示了如何使用`cycle`函数创建一个无限循环迭代器: ``` import itertools l = ['Geeks', 'for', 'Geeks'] iterators = itertools.cycle(l) for i in range(6): print(next(iterators), end=" ") ``` 输出结果为:`Geeks for Geeks Geeks for Geeks Geeks` 在这个例子中,我们定义了一个列表`l`,然后使用`cycle`函数创建了一个无限迭代器`iterators`。在循环中,我们使用`next`函数来获取迭代器的下一个元素,并将其打印出来。由于迭代器是无限的,所以它会无限地重复打印列表中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python 教程之控制流(11)无限迭代器](https://blog.csdn.net/m0_73720982/article/details/127122759)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python迭代器定义与简单用法分析](https://download.csdn.net/download/weixin_38689551/13772081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值