0

我正在尝试遍历列表并获取列表的每个部分,对其进行编码并在全部完成后将结果连接起来。例如,我有一个字符串,它生成一个列表,每个元素的长度为 16 个字符。

message = (u'sixteen-letters.sixteen-letters.sixteen-letters.sixteen-letters.')
result = split16(message, 16)
msg = ';'.join(encode(result.pop(0)) for i in result)

编码函数接受一个 16 字节的字符串并返回结果。但是,按照它的编写方式,它只对列表中的一半元素进行编码。

如果我尝试理解:

result = [encode(split16(message, 16) for message in list_of_messages)]
result = ''.join(result)

它会导致整个列表一次发送。我需要做的是将每个元素分别发送到编码函数,得到结果然后将它们连接在一起。

有没有一种简单的方法可以实现这一目标?

4

3 回答 3

1

你想做这样的事情吗?

';'.join(encode(i) for i in message.split('.'))

当然可能只是

';'.join(encode(i) for i in result)

如果你的split16功能足够复杂。

于 2009-10-15T11:06:53.323 回答
1

我对您到底要做什么感到有些困惑,而您发布的代码中缺少括号则使情况更加复杂:

result = [encode(split16(message, 16) for message in list_of_messages]

那应该是:

result = [encode(split16(message, 16) for message in list_of_messages)]  

或者:

result = [encode(split16(message, 16)) for message in list_of_messages]  

我认为第二个会做你想要的。

这段代码:

msg = ';'.join(encode(result.pop(0)) for i in result)

失败是因为在每一步你都在迭代result,但在每一步都用pop. 它应该只是:

msg = ';'.join(encode(i) for i in result)
于 2009-10-15T11:17:42.017 回答
0

我不太清楚你在追求什么,但是

msg=";".join(map(encode,(message[i:i+16] for i in range(0,len(message),16))))
于 2009-10-15T11:16:54.573 回答