2024-09-28 23:21:44 发布
网友
在采访中,我得到了一段Python代码:
"".join([x for x in "\x63\x6c\x75\x62"])
面试官问我:你能让这段代码更快一点吗?输出应该保持完全相同。在
可以说,我没能回答这个问题。我想知道是否有什么可以帮助我理解如何优化这段代码?在
非常感谢。在
无事可做:
>>> res = "\x63\x6c\x75\x62" >>> res 'club'
只是进入毒刺的方式不同而已。在
%%timeit "".join([x for x in "\x63\x6c\x75\x62"]) 289 ns ± 3.54 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
输出club。在
club
[x代表x…]在这里没用。删除它会使代码运行速度提高4倍。在
是一种非常多余的方法:
一般来说,你不应该这样做
x for x in "\x63\x6c\x75\x62"
这是没有用的,因为您没有以任何方式转换或过滤x(当然,它速度较慢)。在
x
最后一件事,如果面试官想删除{},他/她也错了。在
"".join(x for x in "\x63\x6c\x75\x62")
使用listcomp的要慢一些,因为join必须构建一个list(在创建有用的理解时记住这一点很有用,与此不同,请参见Joining strings. Generator or list comprehension?)
join
list
结论:让我们而不是加入club
无事可做:
只是进入毒刺的方式不同而已。在
输出
^{pr2}$club
。在输出
club
。在[x代表x…]在这里没用。删除它会使代码运行速度提高4倍。在
是一种非常多余的方法:
^{pr2}$一般来说,你不应该这样做
这是没有用的,因为您没有以任何方式转换或过滤
x
(当然,它速度较慢)。在最后一件事,如果面试官想删除{},他/她也错了。在
使用listcomp的要慢一些,因为
join
必须构建一个list
(在创建有用的理解时记住这一点很有用,与此不同,请参见Joining strings. Generator or list comprehension?)结论:让我们而不是加入
club
相关问题 更多 >
编程相关推荐