Python Note 300 - Dict

字典推导 和列表推导类似,字典同样可以推导: teams = ["Packers", "49ers", "Ravens", "Patriots"] print {key: value for value, key in enumerate(teams)} >>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0} 从字典中获取元素 使用字典的 get 方法可以安全的获得字典的值,第二个参数是缺省值: data = {'user': 1, 'name': 'Max', 'three': 4} is_admin = data.get('admin', False) 在 Dictionary 中元素分组 和上面类似,先创建 Persons: class Person(object): def __init__(self, age): self.age = age persons = [Person(age) for age in (78, 14, 78, 42, 14)] 如果现在我们要按照年龄分组的话,一种方法是使用 in 操作符: persons_by_age = {} for person in persons: age = person....

February 13, 2017 · 1 min · Me

Python Note 400 - String

capitalize() 首字符大写 center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字串 count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 decode(encoding=‘UTF-8’, errors=‘strict’) 以 encoding 指定的编码格式解码string ,如果出错默认报一个 ValueError 的异常 ,除非 errors 指定的是 ‘ignore’ 或者 ‘replace’ encode(encoding=‘UTF-8’, errors=‘strict’) 以 encoding 指定的编码格式编码string,如果出错默认报一个 ValueError 的异常,除非 errors 指定的是 ‘ignore’ 或者 ‘replace’ endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束 ,如果是,返回 True ,否则返回 False. expandtabs(tabsize=8) 把字符串string中的tab符号转为空格,默认的空格数tabsize是 8. find(str, beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内 ,如果是返回开始的索引值,否则返回-1 index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常....

February 13, 2017 · 2 min · Me

Python Note 500 - Datetime

Python 标准库中的 datetime 模块提供了各种对日期和时间的处理方法。 基本操作 In [1]: import datetime In [2]: now = datetime.datetime.now() In [3]: now Out[3]: datetime.datetime(2015, 6, 1, 10, 26, 38, 836099) 时间转换为字符串 In [4]: now.strftime("%Y-%m-%d %H:%M:%S") Out[4]: '2015-06-01 10:26:38' In [5]: now.replace(hour=0,minute=0,second=0) Out[5]: datetime.datetime(2015, 6, 1, 0, 0, 0, 836099) In [6]: now - datetime.timedelta(days=1) Out[6]: datetime.datetime(2015, 5, 31, 10, 26, 38, 836099) 字符串转换为时间 In [7]: str = 'Fri, 19 May 2017 10:50:42' In [8]: datetime.datetime.strptime(str, '%a, %d %b %Y %H:%M:%S') Out[8]: datetime....

February 13, 2017 · 2 min · Me

Python Note 600 - Functional Programming

lambda lambda 语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。 lambda 语句构建是一个函数对象: In [1]: f = lambda x: x * 2 In [2]: f(8) Out[2]: 16 In [3]: f Out[3]: <function __main__.<lambda>> filter filter(function or None, sequence) -> list, tuple, or string 返回序列中 function(item) 为 true 的项目。如果 fuction 为 None ,那么就返回 测试结果为 true 的项目。如果序列的类型为 tuple 或者 string ,那么返回相同的 类型;其他的则返回 list: In [4]: foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] In [5]: filter(lambda x: x % 3 == 0, foo) Out[5]: [18, 9, 24, 12, 27] map map(function, sequence[, sequence, …]) -> list...

February 13, 2017 · 2 min · Me

Python Note 700 - Sorting

本文基于 Python 2.7.6 [GCC 4.8.2] on linux2 。 Python 中排序常用的有 sort 和 sorted 。 首先来看看定义: >>> help(list.sort) Help on method_descriptor: sort(...) L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; cmp(x, y) -> -1, 0, 1 >>> help(sorted) Help on built-in function sorted in module __builtin__: sorted(...) sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list 从定义中可以看出两者有以下区别: sort 只能用于列表,而 sorted 不仅可以用于列表,还可以用于其他可迭代对象。 sort 会改变列表本身,而 sorted 不会改变可迭代对象本身,而是返回一个新的列表。 http://blog....

February 13, 2017 · 1 min · Me