摘要: 需求:将[1, 2, [3, 4, [5, 6], 7], 8]按顺序输出:1 2 3 4 5 6 7 8。 可以编写如下代码: 阅读全文
posted @ 2019-11-09 16:09 Jeffrey_Yang 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 当有多个不同的序列(container)需要进行迭代时,常见的方式是写多个for循环语句,或者编写如下的代码: itertools模块提供了chain方法,可以组合多个不同类型的容器依次迭代。如下: 阅读全文
posted @ 2019-11-09 15:53 Jeffrey_Yang 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 将多个序列结合起来一起迭代,可以使用内置的zip函数,如下: zip函数构造了一个每个元素为tuple (x, y)的迭代器,其中x取a可迭代对象,y取b可迭代对象中的元素。直到长度最小的那个可迭代对象耗尽为止。 若要以最长的元素为基准,则可以使用itertools的zip_longest方法,如下 阅读全文
posted @ 2019-11-06 23:00 Jeffrey_Yang 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 首先来看集合的所有排列情形,itertools模块提供了permutations函数。 示例如下: 如果只想要一个长度更小的排列集合,可以提供一个可选参数r=None(默认),如下: 接下来看组合的情况,如下示例: 阅读全文
posted @ 2019-11-06 22:30 Jeffrey_Yang 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 有的时候,我们想基于迭代器的某个特定元素开始进行迭代。也就是说,在这个元素之前的元素都跳过。 itertools提供了一个dropwhile方法: itertools.dropwhile(predicate, iterable) Make an iterator that drops element 阅读全文
posted @ 2019-11-06 22:12 Jeffrey_Yang 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 迭代器对象一般来说是不支持像可迭代对象(list,tuple等)的切片操作。 如下示例: itertools模块提供了对迭代器对象的切片操作支持,itertools提供了模块级函数islice。 阅读全文
posted @ 2019-11-06 21:54 Jeffrey_Yang 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 查找 在字符串中匹配和搜索指定文本的常用方案是使用字符串的find, startswith, endswith等方法。如下示例: 对于更为复杂的匹配和搜索文本场景,通常需要使用正则表达式和re模块。值得注意的是,大多数正则表达式操作都可使用re模块级函数或编译的正则表达式对象(compiled re 阅读全文
posted @ 2019-08-09 14:23 Jeffrey_Yang 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 问题 希望使用与在Unix shell中常用的相同通配符模式匹配文本(例如, .py,Dat [0 9] .csv等)。 方案 fnmatch模块提供了两个函数fnmatch和fnmatchcase。唯一的区别是是否区分字母大小写。示例如下: 此模块提供对Unix shell样式通配符的支持,这些通 阅读全文
posted @ 2019-08-08 15:40 Jeffrey_Yang 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 有时我们需要将字符串拆分为字段,但分隔符(及其周围的间距)在整个字符串中不一致。即需要同时使用 多个分隔符以进行匹配。 str对象的split方法只能进行简单的字符串拆分,它的sep参数无法使用正则表达式进行模糊匹配。但re模块的split函数提供了正则表达式模式匹配,拆分字符串。示例如下: 使用r 阅读全文
posted @ 2019-08-08 14:33 Jeffrey_Yang 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 多个字典或映射,希望在逻辑上将它们组合成单个映射以执行某些操作,例如查找值或检查键是否存在。 假如现在有两个字典对象a,b。 假如现在要检查某一键是否在其中一个字典对象中存在。首先检查a,若a中不存在,则检查b。可以使用collections模块的ChainMap类,如下: ChainMap采用多个 阅读全文
posted @ 2019-08-07 22:10 Jeffrey_Yang 阅读(496) 评论(0) 推荐(0) 编辑