Python 从一行到常规For循环
我在一行中有以下For循环:Python 从一行到常规For循环,python,for-loop,Python,For Loop,我在一行中有以下For循环: var = ''.join('%02x' % ord(b) for b in string_var) 它是如何在常规for循环中显示的?这比join效率低,因为每次执行+=操作时,它都会强制Python为新字符串分配内存,但仍然有效 var = '' for b in string_var: var += '%02x' % ord(b) 此外,您还可以通过将join的参数转换为list来加快代码的速度: var = ''.join(['%02x' % o
var = ''.join('%02x' % ord(b) for b in string_var)
它是如何在常规for循环中显示的?这比
join
效率低,因为每次执行+=
操作时,它都会强制Python为新字符串分配内存,但仍然有效
var = ''
for b in string_var:
var += '%02x' % ord(b)
此外,您还可以通过将join
的参数转换为list
来加快代码的速度:
var = ''.join(['%02x' % ord(b) for b in string_var])
实现这一点最简单的方法可能是使用:
使用慢速字符串连接:
var = ''
for b in string_var:
var += '%02x' % ord(b)
你所拥有的是一个;它确实生成了一个传递给str.join()
方法的序列''.join()
将序列连接成一个带空分隔符的字符串
要使用'.join()
调用,您可以首先构建一个列表:
results = []
for b in string_var:
results.append('%02x' % ord(b))
var = ''.join(results)
或使用生成器功能执行相同操作:
def to_hex(lst):
for b in lst:
yield '%02x' % ord(b)
var = ''.join(to_hex(string_var))
def to_hex(lst):
for b in lst:
yield '%02x' % ord(b)
var = ''.join(to_hex(string_var))