如何遍历不带循环的清单

I'm trying to go trough a list called message, that is a simple word and encode it.

I also have a dictionary called symbol_code_table, that has the code for each letter in the word.

像这样:

symbol_code_table = {'a': '011', 'b': '10', 'c': '010', 'd': '00', 'n': '11'}
message = "caba"

因此结果将是这样的:

010 011 10 011

下面,我展示了执行此操作的功能

def encode_huff (message , symbol_code_table):

    binary_code = ''

    for i in message:
      if (i in symbol_code_table):
        binary_code += symbol_code_table[i] 

我想知道是否还有另一种无需使用for循环即可遍历消息的方法。

提前非常感谢您!

评论
  • 婚礼礼堂
    婚礼礼堂 回复

    通常我会说不。您需要至少访问每个元素一次才能对其进行编码,这始终会导致某种形式的for循环,但是您可以编写它。

    如果只需要在python代码中避免使用“ for”关键字,请使用tail-recursion。

    如果要提高速度,可以将消息拆分为多个块,在并行线程中对其进行编码,然后以正确的顺序加入结果以获取完整的编码消息。

  • 普以晴
    普以晴 回复
    我想知道是否还有另一种无需使用for循环即可遍历消息的方法。

    您可以改为使用列表推导:

    binary_code = ''.join([symbol_code_table[i] for i in message])
    

    请注意,这仍然是一个循环。换句话说,运行效率更高。语法更加简洁。