Python itertools的使用简介无限迭代器chain方法

简介

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

无限迭代器

  • count count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出。
import itertools
natuals = itertools.count(1)
for n in natuals:
    print n
...
1
2
3
...
  • cycle cycle()会把传入的一个序列无限重复下去
import itertools
cs = itertools.cycle('ABC') # 注意字符串也是序列的一种
for c in cs:
...     print c
...
'A'
'B'
'C'
'A'
'B'
'C'
...
  • repeat repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数
ns = itertools.repeat('A', 10)
for n in ns:
...     print n
...
打印10次'A'
  • takewhile chain()可以把一组迭代对象串联起来,形成一个更大的迭代器
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
for n in ns:
...     print n
...
打印出1到10

以上来自廖雪峰网站

chain方法

chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:

这个方法自己平时用的比较多,下面讲一下关于chain的实例

  • 实例 1
for c in itertools.chain('ABC', 'XYZ'):
    print c
# 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z
  • 实例 2
import itertools
first=[['1','2','3','4','4'],['2','4','2']]
print(*first)
x=['abc','def']
print(*x)
for i in itertools.chain(*first):
    print(i)

输出为

['1', '2', '3', '4', '4'] ['2', '4', '2'] =>这里是两个元素
abc def =>这里是两个元素
1
2
3
4
4
2
4
2

*放在一个可迭代对象前面可以将对象拆分成多个单元素,比如first=[['1','2','3','4','4'],['2','4','2']],如果把*放在first前面,就会拆成['1','2','3','4','4']['2','4','2']这两个元素,然后在使用chain方法进行迭代

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

PHP面向对象核心(二)——继承、多态、接口

PHP面向对象核心(二) (原创内容,转载请注明来源,谢谢) 三、继承与多态 3.1 继承 1、继承是类级别的复用,关键词为extends;多态是方法级别的复用...

400120
来自专栏blackheart的专栏

[C#6] 3-null 条件运算符

0. 目录 C#6 新增特性目录 1. 老版本的代码 1 namespace csharp6 2 { 3 internal class Perso...

229100
来自专栏信安之路

php 弱类型问题

php 是一门简单而强大的语言,提供了很多 Web 适用的语言特性,其中就包括了变量弱类型,在弱类型机制下,你能够给一个变量赋任意类型的值。

17100
来自专栏互联网技术栈

JVM解读-方法区

方法区,Method Area, 对于习惯在HotSpot虚拟机上开发和部署程序的开发者来说,很多人愿意把方法区称为“永久代”(Permanent Genera...

42140
来自专栏锦小年的博客

python学习笔记4.2-python高级之迭代器

迭代是Python中最强有力的特性之一,同时对编程人员来说,也是最难理解的一种用法。其实从高层次来看,迭代就是一种处理序列中元素的方式。通过自定义迭代对象可以...

227100
来自专栏编程

Java中正则表达式分类及使用方法,分门别类,总结的很好

1、正则表达式是什么? 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。 作用 : 比如注册邮箱 , 邮...

19750
来自专栏C/C++基础

CC++变参函数

C语言中,有时需要变参函数来完成特殊的功能,比如C标准库函数printf()和scanf()。C中提供了省略符“…”能够帮主programmer完成变参函数的书...

9710
来自专栏Python爬虫实战

Python数据类型之字典(上)

之前系列文章介绍了Python简单数据类型和序列数据类型,本文来学习一种新的映射数据类型:字典。

9310
来自专栏猿人谷

Java初学者需掌握的30个概念

基本概念:       1.OOP中唯一关心的是对象的接口是什么,就像计算机的销售商她不管电源内部结构 是怎样的,他只关系能否给你提供电就行了,也就是只要知道c...

180100
来自专栏从零开始学 Web 前端

01 - JavaSE之基础及面向对象

byte(-128 ~ 127) short(-32768 ~ 32767) int(-2147483648 ~ 2147483647)

17640

扫码关注云+社区

领取腾讯云代金券