从一行到常规For循环

bul*_*che 0 python for-loop

我在一行中有以下For循环:

var = ''.join('%02x' % ord(b) for b in string_var)
Run Code Online (Sandbox Code Playgroud)

如何在常规for循环中显示?

Mar*_*ers 5

使用慢速字符串连接:

var = ''
for b in string_var:
    var += '%02x' % ord(b)
Run Code Online (Sandbox Code Playgroud)

你在那里有一个生成器表达 ; 它确实产生了一个传递给str.join()方法的序列.''.join()将序列连接成一个带有空分隔符的字符串.

要使用此''.join()呼叫,您可以先建立一个列表:

results = []
for b in string_var:
    results.append('%02x' % ord(b))
var = ''.join(results)
Run Code Online (Sandbox Code Playgroud)

或使用生成器函数来做同样的事情:

def to_hex(lst):
    for b in lst:
        yield '%02x' % ord(b)

var = ''.join(to_hex(string_var))
Run Code Online (Sandbox Code Playgroud)