写一个函数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
答案 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
不再复制。