11 2019 档案

摘要:默认参数值的陷阱 默认参数值在函数定义的时候并得到计算,如下: 最后输出的结果为5,因为默认值已在函数定义时得到计算。 重要警告 :默认值仅被计算一次。 当默认值是可变对象(例如列表,字典或大多数类的实例)时,这会有所不同。 例如,以下函数累积在后续调用中传递给它的参数: 这段代码将输出: 这是因为 阅读全文
posted @ 2019-11-29 00:07 Jeffrey_Yang 阅读(205) 评论(0) 推荐(0)
摘要:Python函数参数有三种格式,并且可以组合使用。 默认参数值 最常用的格式是给一个或多个参数名称添加默认值。如下所示: 特别的,当存在形式为\ \ name的最终形式参数时,它会收到一个字典,该字典包含除与形式参数相对应的所有关键词参数之外的所有关键词参数。 这可以与形式为\ name的形式参数组 阅读全文
posted @ 2019-11-28 22:26 Jeffrey_Yang 阅读(305) 评论(0) 推荐(0)
摘要:您有一个排序序列的集合,并且想要遍历所有合并在一起的排序序列。 先看如下示例,了解实际需求: 值得注意的是,heapq.merge要求所有的输入序列已排序。特别是,它不会首先将所有数据读入堆中或进行任何初步排序。 它也不对输入进行任何形式的验证,以检查输入是否满足排序要求。 取而代之的是,它仅从每个 阅读全文
posted @ 2019-11-09 16:28 Jeffrey_Yang 阅读(283) 评论(0) 推荐(0)
摘要:需求:将[1, 2, [3, 4, [5, 6], 7], 8]按顺序输出:1 2 3 4 5 6 7 8。 可以编写如下代码: 阅读全文
posted @ 2019-11-09 16:09 Jeffrey_Yang 阅读(152) 评论(0) 推荐(0)
摘要:当有多个不同的序列(container)需要进行迭代时,常见的方式是写多个for循环语句,或者编写如下的代码: itertools模块提供了chain方法,可以组合多个不同类型的容器依次迭代。如下: 阅读全文
posted @ 2019-11-09 15:53 Jeffrey_Yang 阅读(83) 评论(0) 推荐(0)
摘要:将多个序列结合起来一起迭代,可以使用内置的zip函数,如下: zip函数构造了一个每个元素为tuple (x, y)的迭代器,其中x取a可迭代对象,y取b可迭代对象中的元素。直到长度最小的那个可迭代对象耗尽为止。 若要以最长的元素为基准,则可以使用itertools的zip_longest方法,如下 阅读全文
posted @ 2019-11-06 23:00 Jeffrey_Yang 阅读(187) 评论(0) 推荐(0)
摘要:首先来看集合的所有排列情形,itertools模块提供了permutations函数。 示例如下: 如果只想要一个长度更小的排列集合,可以提供一个可选参数r=None(默认),如下: 接下来看组合的情况,如下示例: 阅读全文
posted @ 2019-11-06 22:30 Jeffrey_Yang 阅读(711) 评论(0) 推荐(0)
摘要:有的时候,我们想基于迭代器的某个特定元素开始进行迭代。也就是说,在这个元素之前的元素都跳过。 itertools提供了一个dropwhile方法: itertools.dropwhile(predicate, iterable) Make an iterator that drops element 阅读全文
posted @ 2019-11-06 22:12 Jeffrey_Yang 阅读(403) 评论(0) 推荐(0)
摘要:迭代器对象一般来说是不支持像可迭代对象(list,tuple等)的切片操作。 如下示例: itertools模块提供了对迭代器对象的切片操作支持,itertools提供了模块级函数islice。 阅读全文
posted @ 2019-11-06 21:54 Jeffrey_Yang 阅读(129) 评论(0) 推荐(0)