从两个列表解密代码

2024-05-01 22:07:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我有正确的想法来解决这个函数,但我不知道为什么我没有得到预期的结果。有人能帮我修一下吗

>>>decrypt(['a', '2', 's', 'c', '0'], [3, 2, 3, 0, 1, 4])

My output: [0, 1, 2, 3, 4]


>>>decrypt(['a', '2', 's', 'c', '0'], [3, 2, 3, 0, 1, 4])

Desired Output: ['c', 's', 'c', 'a', '2', '0']


def decrypt(characters, code):
    L = []
    for item in range(len(characters)):
        result = characters[item]
        answer = code.index(item)
        L.append(item)
    return L 

Tags: 函数inforoutputlenmydefcode
2条回答

现在发生的是item变量是计数0,1,2,3,4。。。对于code列表的索引。相反,您应该通过执行in code:而不是in range(...来迭代构成code的整数。这样,item就是列表中每个项上的代码值,这些值是您想要从characters中获取的索引

def decrypt(characters, code):
    L = []
    for item in code:
        result = characters[item]
        L.append(result)
    return L

print(decrypt(['a', '2', 's', 'c', '0'], [3, 2, 3, 0, 1, 4]))

这也可以通过列表理解来完成:

def decrypt(characters,code):
    return [characters[i] for i in code]

如果您想要字符-源代码-从源代码顺序获取字符

def decrypt(characters, code):
    L = []
    for item in range(len(code)):
        result = code[item]
        L.append(characters[result])
    return L 

print(decrypt(['a', '2', 's', 'c', '0'], [3, 2, 3, 0, 1, 4]))

相关问题 更多 >