python
katsueiki
疯狂程序员, 目前在aliyun工作的小菜鸟一枚
展开
-
python list和dict的遍历
其实在python中有很多种遍历的方法,但是想要获取下标却是不那么容易,主要有以下两种方法方法一:for i in xrange(len(list)): print(i, a[i])方法二:for i el in enumerate(list): print(i, el)其中方法二如果只写一个值的时候,这个值会直接打印出key-value键值对的元组解决方法:for _, el in原创 2016-02-02 19:36:28 · 6632 阅读 · 0 评论 -
python中静态方法和类方法
方法是作为类属性保存的函数def get_size(self): pass在python2, 3中的不同点。 2: Pizza.get_size(), 会报一个未绑定的函数的错误 3: Pizza.get_size(), 会报一个缺少参数的错误, 即,python3可以动态的传入方法所属于的类的任意一个实例静态方法: 静态方法是属于类的方法,但是实际上原创 2016-09-30 15:02:06 · 385 阅读 · 0 评论 -
深入理解Global Interpreter Lock
本文是David Beazley 在chipy上演讲的ppt, 深入的介绍了GIL的相关表现及原理, 此文是在简单翻译的基础上加上了一些其他地方查看的资料组合而成先让我们做一个实验如下是一个CPU-bound的方法def countdown(n): while n > 0: n -= 1COUNT = 100000000countdo...翻译 2018-01-26 20:50:43 · 662 阅读 · 0 评论 -
Pycharm 5.0 and Pycharm 2016 的破解
在安装之后,调整时间到2xxx年,然后申请三十天试用,之后退出pyCharm,然后将时间调成回来在注册的时侯选择 License server ,填 http://idea.lanyus.com ,然后点击 OK(5.0)在注册的时侯选择 License server ,填 http://idea.qinxi1992.cn,然后点击 OK(2016.1)http://jetbrains.t...转载 2016-02-16 11:36:16 · 18363 阅读 · 5 评论 -
A Curious Course on Coroutines and Concurrency 翻译
这是David Beazley 在 Pycon 2009 做的讲座,下文是初步的翻译总体概述协程是什么?我们可以用协程做什么?我们应该在意协程吗?使用协程是否是一个好主意?图片概述头部爆炸指数图表, 随着本文的持续推进, 难度逐渐上升纵轴分别是 起点, 引起头疼, 开玩笑(基本不可能) 在继续往下阅读时必须对生成器和生成器表达式非常熟悉, ...翻译 2018-04-28 10:58:26 · 374 阅读 · 0 评论 -
关于生成器在类中作用域混乱的问题
第一种方式: python 2:class A(object): x = 4 gen = (x for _ in range(5))a = A()print(list(a.gen))result:Traceback (most recent call last): File "Untitled 8.py", line 10, in <...翻译 2018-06-05 14:54:14 · 177 阅读 · 0 评论 -
避免使用 Python 的 hasattr()
不要使用 python 中的 hasattr() 除非你只在python3环境中使用它并且知道它的内部原理总的来说,不要以如下方式使用if hasattr(x, "y"): print x.yelse: print "no y!"我们可以使用如下方式进行代替try: print x.yexcept AttributeError: prin...翻译 2018-07-16 20:23:02 · 740 阅读 · 0 评论 -
python OrderedDict 详解
OrderedDict 是 collections 提供的一种数据结构, 它提供了有序的dict结构。先把源代码贴一下class OrderedDict(dict): '记住插入顺序的字典' # 一个继承自dict的键值对字典 # 继承的字典提供 __getitem__, __len__, __contains__, get 方法 # 所有方法的O() ...原创 2018-07-06 14:18:22 · 41739 阅读 · 3 评论 -
modern python dictionaries
本文是pycon 2017上的演讲, 主要涉及python 字典的实现,以及如何实现一个更加高效的字典, 主要改进的地方就是讲key的hash值进行保存,当rehash的时候不用重新计算所有的key值,可以大大提高效率视频地址: YouTubeimport arrayimport collectionsimport itertoolsFREE = -1DUMMY =...翻译 2018-08-23 11:52:03 · 178 阅读 · 0 评论 -
python 中set为何不是hashable
>>> set([set()])traceback(most recent call last): File "<stdin>", line 1, in <module>TypeError: unhashable type: 'set'set 是可变的,如果你想讲set变为不可变的话,用frozenset 代替,总的来说,在python中,只有不可变对象是可以hashable的,fro原创 2016-09-30 14:32:19 · 1121 阅读 · 0 评论 -
python OrderedDefaultDict 的实现
ordereddefaultdict转载 2016-08-31 10:54:31 · 680 阅读 · 0 评论 -
PEP 8 代码规范
代码排版缩进每层缩进使用四个空格续行要么与圆括号、中括号、花括号这样的被包裹元素保持垂直对齐,要么放在 Python 的隐线(注:应该是相对于def的内部块)内部,或者使用悬挂缩进5。使用悬挂缩进的注意事项:第一行不能有参数,用进一步的缩进来把其他行区分开。# Aligned with opening delimiter.foo = long_function_name(var_one, var_转载 2016-02-21 16:08:33 · 1266 阅读 · 0 评论 -
一行python实现树形结构
定义使用内置的defaultdict 我们可以很容易的定义一个树形数据结构def tree(): return defaultdict(tree)example:json风格users = tree()users['harold']['username'] = 'bell'users['handler']['username'] = 'master'我们可以使用print(json.dumps(转载 2016-04-04 13:29:35 · 12793 阅读 · 0 评论 -
python map
function with many argsmap函数,采用偏函数方式来为函数来添加多个参数map(functools.partial(self.english_recursive, branches=branches, index=index), next_level_knowledge_tags)input a list of function!话不多说,上代码def multiply(x)原创 2016-04-06 20:31:17 · 357 阅读 · 0 评论 -
python catch exception and continue try block
python不支持如下方式try: do_sth1() do_sth2()except: #when catch except,continue run do_sth2()但是我们可以用如下方式来实现:funcs = do_sth1, do_sth2for func in funcs: try: func() except Exception原创 2016-04-12 10:09:26 · 1128 阅读 · 0 评论 -
关于mongodb '$in' 查询无序问题
本文用python和pyMongo来实现该问题解决方法‘$in’是我们经常用到去解决循环db访问的一个有效方法,但是’$in’查询会伴随着一个问题,就是查询出的结果与被当作参数传入的list的顺序不一致。解决方法: 排序:将传入的list进行编号,然后将查询出的结果集根据编号进行sort排序。items = db.items.find('_id': {'$in': item_ids})原创 2016-05-16 11:44:45 · 3589 阅读 · 0 评论 -
python 生成器总结
最近因为看见公司一位大神将yield用的出神入化,极为赞叹,遂研究了一下他的代码,总结出以下yield使用方法,希望大家加以指正。都知道yield是python生成器,他可以将数据一个一个的“生”出来而不是将所有数据存储到内存中,从而造成大量内存的占用,这个是yield使用最常见的一种方式,这种方式大概是使用for循环中嵌套yield语句来实现的。 如下:for i in range(x):原创 2016-06-10 09:18:02 · 354 阅读 · 0 评论 -
osx 安装pillow时出现的问题
为新的mac安装Python开发环境,出现了无法找到zlib的情况,无论是 brew install zlib 还是其他状况都不好使,参考如下链接解决:http://stackoverflow.com/questions/23749530/brew-install-zlib-devel-on-mac-os-x-mavericksxcode-select –install 运行如上命令即可解决原创 2016-06-27 11:29:45 · 388 阅读 · 0 评论 -
pythonic dict
存在性 不推荐 dict.has_key() 推荐 key in dict不推荐 not key in dict 推荐 key not in dict默认值 dict.get(key, 0)有时你的字典都是经常修改的对象,你需要初始化一些数据到这个字典,也需要修改其中的一些值,比如说你再维护这样一个dict, 它的值都是链表dic = {}for (key, value) in原创 2016-08-29 19:34:16 · 377 阅读 · 0 评论 -
pyparsing 无法卸载
Cannot uninstall 'pyparsing'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.安装pyparsing 报错, 可以通过指...原创 2019-09-25 11:00:54 · 465 阅读 · 1 评论