enumerate - 迭代一个列表的index和item <Python Cookbook>(Recipe 4.4)描述了如何使用enumerate迭代item和index. 例子如下: alist = ['a1', 'a2', 'a3'] for i, a in enumerate(alist): print(i, a) 结果如下: 0 a1 1 a2 2 a3 zip - 同时迭代两个列表 我之前用zip写过同时迭代两个列表的代码. 例子如下: alist = ['a1', 'a2',…
让 Python 的数据库查询返回字典记录: https://yanbin.blog/python-database-query-return-dictionary-result/#more-9179 前言:利用zip函数将两个列表(list)组成字典(dict) # 使用zip函数, 把key和value的list组合在一起, 再转成字典(dict). keys = ['a', 'b', 'c'] values = [1, 2, 3] dictionary = dict(zip(keys, v…
enumerate 第一个是枚举函数. 在我们的日常编程过程中,我们经常遇到一个问题. 在C语言和一些古老的语言中没有迭代器的概念,所以当我们想要遍历数组或容器时,我们只能使用下标.使用迭代器,我们的遍历过程更加方便.我们可以直接使用变量来迭代容器中的值.最简单的例子是数组遍历.例如,我们需要遍历items数组.我们可以直接: for item in items: 通过迭代器的方法,可以方便地遍历数组而不需要下标和计算数组的长度.但是如果我们需要知道循环体中元素的下标呢? 我们真的需要在下标和迭…
当年龟叔想把上面列出来的这些都干掉.在 “All Things Pythonic: The fate of reduce() in Python 3000”这篇文章中,他给出了自己要移除lambda.map.filter和reduce的原因.当然,这事儿最后没成功.只有reduce被挪到functools模块中去了. lambda lambda是匿名函数,也就是没有名字的函数.lambda的语法非常简单: 下面是一个lambda表达式的简单例子: 注意:我们可以把lambda表达式赋值给一个变量…
原文地址:http://engineroom.trackmaven.com/blog/making-a-mockery-of-python/ 今天我们来谈论下mock的使用.当然,请不要误会,这里的mock可不是嘲弄的意思.mock是一门技术,通过伪造部分实际代码,从而让我们能够验证剩余代码的正确性.现在我们将通过几个简单的示例演示mock在Python测试代码中的使用,以及这项极其有用的技术是如何帮助我们改善测试代码的. 为什么我们需要mock? 当我们进行单元测试的时候,我们的目标往往是为了…
原文来源: https://stackoverflow.com/questions/7828867/how-to-efficiently-compare-two-unordered-lists-not-sets-in-python 问: a = [1, 2, 3, 1, 2, 3] b = [3, 2, 1, 3, 2, 1] 我们需要判断a和b是相等的,因为他们有同样的元素,尽管他们的顺序不同. 但是实际情况是,list会按照顺序比对内部元素,该如何解决? 答: O(n)复杂度: 如果内部的对…
原文来源:https://stackoverflow.com/questions/2136556/in-python-how-do-i-split-a-string-and-keep-the-separators 这是解释这个问题的最简单方法.这是我正在使用的: re.split('\W', 'foo/bar spam\neggs') -> ['foo', 'bar', 'spam', 'eggs'] 这就是我想要的: someMethod('\W', 'foo/bar spam\neggs')…
怎么从一个集合中获取最大或最小的N个元素列表? heapq模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题. In [39]: import heapq In [40]: nums = [2, 5, 3, 4] In [41]: heapq.nlargest(2,nums) Out[41]: [5, 4] In [42]: heapq.nsmallest(2,nums) Out[42]: [2, 3] 两个函数都能接受一个关键字参数,用于更复杂的数据结构中:…
map() Return an iterator that applies function to every item of iterable, yielding the results 例如: a = map(lambda x:x**2 ,[1,2,3]) print([b for b in a]) 结果: [1, 4, 9] 或者: a = map(lambda x,y:x+y ,[1,2,3],[1,2]) print([b for b in a]) 结果: [2, 4] filter(…
什么是递归?简单的说就是:函数自身调用自身. “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归很实用 但需要注意的是: #递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要知道“归去来兮” #所谓“归去来兮”就是指递归的两个原则: #1.调用了函数自身 #2.设置了自身正确的返回值 (必须有一个正确的返回停止条件,不能无限下去) 举简单的例子 下面是用迭代和递归实现的阶…