python 有没有办法简化这个循环?

jogvjijk  于 2022-12-10  发布在  Python
关注(0)|答案(2)|浏览(189)
E = [('c', 1), ('a', 1), ('t', 2), ('l', 1), ('e', 1)]

def check_freq(x):
    decoded_string = ''
    for element in x:
        decoded_string += int(element[1]) * element[0]
    print(decoded_string)
check_freq(E)

该函数获取一个编码字符串并返回解码版本,在本例中我们得到了“cattle”,我只是想知道是否有更有效的方法来完成此操作,或者是否有一些提示可以帮助我实现更高的效率

disho6za

disho6za1#

您是否希望您的代码像这样短:

E = [('c', 1), ('a', 1), ('t', 1), ('t', 1), ('l', 1), ('e', 1)]

def check_freq(lst):
    return ''.join([tpl[1] * tpl[0] for tpl in lst])
    
print(check_freq(E))
6yt4nkrj

6yt4nkrj2#

对于某些导入,您可以执行以下操作:

from operator import mul
from itertools import starmap

check_freq = lambda x: "".join(starmap(mul, x))

E = [('c', 1), ('a', 1), ('t', 1), ('t', 1), ('l', 1), ('e', 1)]
print(check_freq(E))  # cattle

相关问题