Python反向功能

时间:2013-12-07 01:01:49

标签: python

写一个函数is_reverse的定义,它的两个参数是大小相等的整数数组。当且仅当一个数组与另一个数组相反时,该函数返回true。 (“Reverse”在这里表示相同的元素,但顺序相反。)

这是我到目前为止所做的:

def is_reverse(a,b):
    c = b.reverse()
    for i in len(a):
        if a[i] == c[i]:
            return True
        if a[i] != c[i]:
            return False

3 个答案:

答案 0 :(得分:6)

可以用

写一行
 def is_reverse(a, b): return a == b[::-1]

答案 1 :(得分:3)

您的代码在循环中第一次无条件退出(字符相同,或者它们不同,并且两种情况都有返回语句)。您只需要在检查完所有字符串元素后返回True

还有另一个轻微的问题 - list.reverse()反转列表到位。这意味着c = b.reverse()更改b并将c设置为None。我在下面的代码中对其进行了修改。

def is_reverse(a,b):
    # copy b -- Not strictly necessary if you don't care about changing the inputs...
    c = b[:] 
    c.reverse()
    for i in range(len(a)):
        if a[i] != c[i]:
            return False
    return True

其他人指出,有更多惯用的方法可以做到这一点:

a == b[::-1]

是经典的例子(它为你做循环!)。但是我保留原始代码的结构尽可能完整,希望能让python更加清晰。

答案 2 :(得分:1)

如果您想避免复制任何一个列表:

len(a) == len(b) and all(itertools.imap(operator.eq, a, reversed(b)))

如果您使用的是Python3,那么就没有itertools.imap,因为内置map不再复制。