我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.
我的代码看起来像这样:
my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)
但后来我想,这样写它会不会更好?
my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)
它更具可读性,如果需要性能,可以取出lambda来获得一些东西.
问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?
我正在处理Python中的日期,我需要将它们转换为UTC时间戳,以便在Javascript中使用.以下代码不起作用:
>>> d = datetime.date(2011,01,01)
>>> datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))
datetime.datetime(2010, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)
将日期对象首先转换为datetime也无济于事.我试过这个链接的例子,但是:
from pytz import utc, timezone
from datetime import datetime
from time import mktime
input_date = datetime(year=2011, month=1, day=15)
Run Code Online (Sandbox Code Playgroud)
现在要么:
mktime(utc.localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
要么
mktime(timezone('US/Eastern').localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
确实有效.
所以一般的问题:如何根据UTC获得自纪元以来转换为秒的日期?
为了加速测试一段代码,在Python中比较2次的正确方法是什么?我试过阅读API文档.我不确定我理解timedelta的事情.
到目前为止,我有这个代码:
from datetime import datetime
tstart = datetime.now()
print t1
# code to speed test
tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
Run Code Online (Sandbox Code Playgroud) 如何获得自纪元以来的毫秒数?
请注意,我想要实际的毫秒,而不是秒乘以1000.我正在比较需要不到一秒钟且需要毫秒精度的东西的时间.(我看了很多答案,他们似乎都有*1000)
我将POST请求中的时间与服务器上的结束时间进行比较.我只需要两次使用相同的格式,不管是什么.我认为unix时间会起作用,因为Javascript有一个函数可以实现
datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)
此调用返回的日期时间不正确,从UTC/GMT延迟1小时(请登录:http://www.worldtimeserver.com/current_time_in_UTC.asp).
它应该像它应该的那样工作吗?
例如,它现在正在返回:
2015-02-17 23:58:44.761000.
Run Code Online (Sandbox Code Playgroud)
当前UTC时间是:00:58,而不是23:58
如何计算毫秒,从下面的代码.
a = datetime.datetime.now()
b = datetime.datetime.now()
c = b - a
>>> c
>>> c.days
0
>>> c.seconds
4
>>> c.microseconds
Run Code Online (Sandbox Code Playgroud) 我终于弄明白这一点,想分享知识并节省一些时间,所以请看下面的答案.但是,我仍然需要Linux的答案,所以如果你知道,请回答,因为我的答案中的代码仅适用于Windows.
更新:我也想到了Linux,包括前Python 3.3(例如:Raspberry Pi),我在下面的答案中发布了我的新模块/代码.
我原来的问题:如何在Python中获得毫秒和微秒分辨率的时间戳?我也喜欢类似Arduino的延迟和delayMicroseconds()函数.
几个月前,这个问题被标记为这个问题的副本.看这里:
它说,"这个问题在这里已有答案." 不幸的是,这不是真的.几年前我在问这个问题之前就读过这些答案了,他们没有回答我的问题,也没有满足我的需要.它们和我的问题一样不适用,因为它是最黑的回答,因为它依赖于time模块,因为它依赖于模块,因为它不具有任何类型的保证分辨率,因此它是不可思议的错误:
请重新打开我的问题.它不是重复的.它没有其他问题的事先答案.链接已经包含答案的问题依赖于time模块,甚至表明它的解决方案已经到处都是.最热门的答案是使用16毫秒的答案引用Windows分辨率,这比我在此提供的答案(0.5 美分分辨率)差32000倍.同样,我需要1 ms和1 us(或类似)分辨率,而不是16000 us分辨率.因此,它不是重复的.
谢谢你的时间.:)
time.time()方法为您提供时间戳,该时间戳基本上是自纪元(以UTC为单位)以来经过的时间.
datetime.fromtimestamp()表示如果未提供tz参数,则返回本地日期时间对象.
我知道tz信息基本上被视为utc的偏移量以获得当地时间.
如果是这种情况,则必须从平台中提取utc中的当前时间.
从底层平台提取当天的当前时间,无论是本地还是UTC?
给出两个列表,list1和list2
list3 = filter(lambda x: x in list1,list2)
Run Code Online (Sandbox Code Playgroud)
这将返回两个列表的交集.
如何找到此算法的复杂性?我发现时间复杂度x in list1是O(n),其中n是列表中元素的数量,但是如何filter?
因此,我有两个函数可以将python datetime.datetime()对象与毫秒之间相互转换。我无法弄清楚哪里出了问题。这是我正在使用的:
>>> import datetime
>>> def mil_to_date(mil):
"""date items from REST services are reported in milliseconds,
this function will convert milliseconds to datetime objects
Required:
mil -- time in milliseconds
"""
if mil == None:
return None
elif mil < 0:
return datetime.datetime.utcfromtimestamp(0) + datetime.timedelta(seconds=(mil/1000))
else:
return datetime.datetime.fromtimestamp(mil / 1000)
>>> def date_to_mil(date):
"""converts datetime.datetime() object to milliseconds
date -- datetime.datetime() object"""
if isinstance(date, datetime.datetime):
epoch = datetime.datetime.utcfromtimestamp(0)
return long((date - epoch).total_seconds() * 1000.0)
>>> mil = 1394462888000 …Run Code Online (Sandbox Code Playgroud) 在 JavaScript 中,我可以分配:
var now = Date.now();
然后使用 now 作为数字变量进行计算
>>> import datetime
>>> datetime.datetime.now()
>>> datetime.datetime.today()
Run Code Online (Sandbox Code Playgroud)
在python3中,使用上层代码似乎没有帮助。知道什么相当于 Date.now() 吗?
python ×9
datetime ×5
time ×4
python-2.7 ×3
utc ×3
benchmarking ×1
date ×1
delay ×1
filter ×1
javascript ×1
lambda ×1
list ×1
milliseconds ×1
python-3.x ×1
timestamp ×1
timing ×1