给dict设置默认值
这样能设置所有key的默认值为[],包括新添的key
12 from collections import defaultdictcontext = defaultdict(list)
setdefault一次只能设置一个值,但好处是能使用链式语法,但defaultdict更快一些
12 context = {}context.setdefault('name_list', []).append('Fiona')
或者用fromkeys,用法dict.fromkeys(seq[, value])),value默认是国际惯例的None
123456 name_list = ['kevin', 'robin']context = {}.fromkeys(name_list, 9)# {'kevin': 9, 'robin': 9} context = dict.fromkeys([1, 2], True) # {1: True, 2: True}
列表深复制
12 a = [3, 2, 1]b = a[:]
字典深复制
12 a = {'male':0, 'female': 1}b = a.copy()
时间转换相关获取今天的年月日时间(date)
两种代码效果相同
1234 from datetime import datetime n_date = datetime.now().date()n_date = datetime.today().date()
date -> datetime
1234 from datetime import datetime b = datetime.combine(n_date, datetime.min.time())# datetime.datetime(2015, 9, 8, 0, 0)
datetime -> date
比较简单,直接使用datetime_object.date()即可
1234 # datetime.datetime(2015, 6, 5, 11, 45, 45, 393548)a = datetime.datetime()# datetime.datetime(2016, 6, 5)b = a.date()
time.struct_time -> datetime
一般time.localtime()或者用time.striptime()得到的就是time.struct_time
使用位置参数
123 structTime = time.localtime()datetime.datetime(*structTime[:6])# datetime.datetime(2009, 11, 8, 20, 32, 35)
或者使用datetime.fromtimestamp,但是要注意此处的时间不能早于1970-01-01 00:00
1234 from time import mktimefrom datetime import datetime dt = datetime.fromtimestamp(mktime(struct))
计算日期之差
123456 from datetime import date d0 = date(2008, 8, 18)d1 = date(2008, 9, 26)delta = d0 - d1print delta.days
获取milliseconds(13位数字)
12345678910 import timefrom datetime import datetime time.time() # 1441769033.549239int(time.time() * 1000) # 1441769033549 # ordef unix_time_milliseconds: time_gap = datetime.utcnow() - datetime.utcfromtimestamp(0) return int(time_gap.total_seconds() * 1000) # 1441769033549
使用map作iterator
当将func设置为None时,可起到iterator的作用,结果类似于使用了zip,唯一的区别是map可以按最长的列表扩展。
python2.x中的itertools.zip_longest可以起到与此处map相同的效果
1234 map(None, xrange(3), xrange(10,12))# [(0, 10), (1, 11), (2, None)]zip(xrange(3), xrange(10,12))# [(0, 10), (1, 11)]
判断奇数
自然是使用位操作最快了
Python
12 if a & 1: print 'it is even'
dict删除key
要删除的key数量较多(超多一半)的话,建议重新生成dict;如果数量较少,在pop和del都可以的情况下,del稍快一些
12 python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "d1 = d.copy()" "for k in d1.keys():" " if k.startswith('f'):" " del d1[k]"# 1000000 loops, best of 3: 0.827 usec per loop
12 python -m timeit -s "d = {'f':1,'foo':2,'bar':3}" "d1 = d.copy()" "for k in d1.keys():" " if k.startswith('f'):" " d1.pop(k)"# 1000000 loops, best of 3: 0.96 usec per loop
怎么样才能学好python
学好python你需要一个良好的环境,一个优质的开发交流群,群里都是那种相互帮助的人才是可以的,我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是304050799,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。