如何在python中将正整数列表转换为负整数?

时间:2015-11-07 21:27:31

标签: python-2.7

好的,前言我正在尝试编写一个接受字符串输入的加密程序,使用ord()函数将每个字符转换为整数,然后使用伪随机生成的数字序列进行移位。它本质上是一个vigenere密码程序,我几乎得到了它。我只是解密功能有问题,因为我不知道如何从加密消息中减去密钥,以便我可以解密它。

def input1():
    mes = raw_input('> ').upper()
    shiftl = []
    while len(mes) > len(shiftl):
        shiftl.append(random.randint(1,26))
    return mes, shiftl

def encrypt(x,y):
    h = []
    for item in x:
        h.append(ord(item) - 65)
    e = [sum(i) for i in zip(h,y)]
    return e

def decrypt(e, y):
    u = [sum(i) for i in zip(e,-(y))]
    d = []
    for item in u:
        d.append(chr(item + 65))
    return d

这是我需要帮助的一条线。

u = [sum(i) for i in zip(e,-(y))]

我试图简单地在列表前添加 - 但是一元运算符不能在列表上运行。那么,从加密消息中减去此列表的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您有一个列表并且想要更改内容,请使用带有切片分配的列表推导:

a = [1, 3, 5]
a[:] = [-1*x for x in a]
print a

这个的输出是:

[-1, -3, -5]

答案 1 :(得分:0)

我很可能没有得到你想要的东西,但对于另一种情况:

def negList(list):
    for(n in list):
        n = -n
    return list

list = negList(list)

抱歉,如果我弄错了。

相关问题