我在一行中有以下For循环:
var = ''.join('%02x' % ord(b) for b in string_var)
如何在常规for循环中显示?
答案 0 :(得分:5)
使用慢速字符串连接:
var = ''
for b in string_var:
var += '%02x' % ord(b)
你所拥有的是generator expression;它确实产生了一个传递给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))
答案 1 :(得分:2)
效率低于join
,因为它会强制Python每次执行+=
时为新字符串分配内存,但它仍然有效
var = ''
for b in string_var:
var += '%02x' % ord(b)
此外,您可以将join
的参数转换为list
来加快代码速度:
var = ''.join(['%02x' % ord(b) for b in string_var])
使用binascii.hexlify
可能是最简单的方法:
from binascii import hexlify
var = hexlify('uhh'.encode())