python 技巧总结

1 把完全为int的列表转化为全为str的列表,为后续join使用做准备:
列表表达式:

a = [1,2,3,4,5]
b = [str(i) for i in a]

map函数:

a = [1,2,3,4,5]
b = map(str,a)

2 unix_stamp,str时间转换
Linux转换为时间格式
value = 1478444524
import time
value = time.localtime(value)
(time.localtime(): 没有参数就显示当前时间)

#

value现在就是时间元组的格式
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=6, tm_hour=20, tm_min=21, tm_sec=56, tm_wday=6, tm_yday=311, tm_isdst=0)

#

从时间格式可以获取年月日时分秒
value[1] = 年
value[2] = 月

从字符串转化为时间格式
dt = ‘2016-10-18 20:10:09’
aa = time.strptime(dt, ‘%Y-%m-%d %H:%M:%S’)

从时间格式转化为unixtimestamp
value_unix = time.mktime(value_time_tuple)

从时间格式转化为str
dt_str=time.strftime(‘%Y-%m-%d %H:%M:%S’,value)

3 表示当前时间
把一个Linux时间戳t换为可读形式
time.ctime(t) ‘Thu May 5 14:58:09 2011’
也有t.ctime()显示时间t的可读格式

把一个表示时间的元组t换为可读形式
time.asctime(t) ‘Sun Jun 20 23:21:05 1993’
t.asctime
time.time()
1304575584.1361799

4 datetime模块
(strptime 在time模块,from datetime import datetime模块都有该属性,因此可以按需选取,感觉直接用datetime模块更方便)

dir(datetime)  
['MAXYEAR', 'MINYEAR', '__doc__', '__name__', '__package__', 'date', 'datetime',  
 'datetime_CAPI', 'time', 'timedelta', 'tzinfo']  

包含的数据:
MAXYEAR – 能表示的最大年份
MINYEAR – 能表示的最小年份
datetime_CAPI – C语言api访问的对象,可以help(datetime.datetime_CAPI)

包含的对象:
date – 日期对象
datetime – 日期时间对象
time – 时间对象
timedelta – 日期时间间隔对象
tzinfo – 时区信息对象
常用的用法
now = datetime.datetime.now()
datetime.date.today().year
datetime.date.today().month
datetime.date(年数字,月数字,日数字)
返回格式:datetime.date(2016, 10, 31)

获取时间差(换成datetime格式相减):
starttime = datetime.datetime.now()
endtime = datetime.datetime.now()
print (endtime - starttime).seconds
seconds也可换为days

ps 一个坑,似乎上述时间差计算的本质还是所差秒数是否够时间间隔
比如:

from datetime import datetime
t=1492095399
thisDate= datetime.strptime(t) #2017-04-13 22:56:39
lastTime=1492123967
lastDate=datetime.strptim(t)#2017-04-14 06:52:47
day_delta = (lastDate-thisDate).days
#结果为0,而想要的结果为13号 14号并不是同一天,所以间隔为1
#所以可以用如下写法
day_delta = (datetime.date(lastDate)-datetime.date(thisDate)).days
#因为时分秒部分都为0,所以间隔为24h,所以算一天

问题:如何第一次就快速正确!!较深入的理解API?

时间改变:换成datetime格式,用timedelta对象
d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()

time和datetime对象转化

#-------------------------------------------------
# conversions to datetime objects
#-------------------------------------------------
# time tuple to datetime object
time_tuple = (2008, 11, 12, 13, 51, 18, 2, 317, 0)
dt_obj = datetime(*time_tuple[0:6])
print repr(dt_obj)
# date string to datetime object
date_str = "2008-11-10 17:53:59"
dt_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print repr(dt_obj)
# timestamp to datetime object in local time
timestamp = 1226527167.595983
dt_obj = datetime.fromtimestamp(timestamp)
print repr(dt_obj)
# timestamp to datetime object in UTC
timestamp = 1226527167.595983
dt_obj = datetime.utcfromtimestamp(timestamp)
print repr(dt_obj)
#-------------------------------------------------
# conversions to time tuples
#-------------------------------------------------
# datetime object to time tuple
dt_obj = datetime(2008, 11, 10, 17, 53, 59)
time_tuple = dt_obj.timetuple()
print repr(time_tuple)

4 对两个(多个列表同时取),列表表达式产生笛卡尔积,zip按对应位置取
介绍zip比较清楚的帖子:http://blog.sina.com.cn/s/blog_7ae1b8300100x05p.html

a = [1,2]
b = [3,4]
c=[(x,y) for x in a for y in b]
#c的结果
[(1, 3), (1, 4), (2, 3), (2, 4)]
c=zip(a,b)
#c的结果
[(1, 3), (2, 4)]

5、介绍python try except的帖子
http://www.cnblogs.com/Lival/p/6203111.html

6、类相关
讲新式类,经典类挺清楚的帖子
https://my.oschina.net/u/242764/blog/414833
讲类基础知识全面的帖子
http://www.runoob.com/python/python-object.html

7、列表初始化n个相同值。(两种方式)

>>> lst = ['x' for n in range(5)]
>>> print(lst)
['x', 'x', 'x', 'x', 'x']
>>> lst = ['z']*5 #!!!这个很好
>>> print(lst)
['z', 'z', 'z', 'z', 'z']
>>> lst = [0]*3
>>> print(lst)
[0, 0, 0]

来自:http://walkerqt.blog.51cto.com/1310630/1264912

8 两个列表同位置内容相加或相乘

l2 = [3,3,3,3]
prod = map(lambda (a,b):a*b, zip(l1,l2))
print prod
# [6, 6, 6, 6]
add = map(lambda (a,b):a+b, zip(l1,l2))
print add
# [5, 5, 5, 5]

9 两个map想加的方式
http://www.pythoner.com/13.html

#方法1 python两个字典合并
dictMerged1 = dict( dict1.items() + dict2.items() )  
#方法2
dictMerged2 = dict( dict1, **dict2 )
#方法3
dictMerged3.update( dict2 )

9 待看
python 测试:http://pyunit.sourceforge.net/pyunit_cn.html
python 静态方法 类方法 实例方法区别:http://www.jianshu.com/p/212b6fdb2c50

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值