级别:初级
下面的代码会打印'False'
def function(x):
if len(x) == 5: return True
else: return x[0] == x[-1]
print function('annb')
为什么“else: return x[0] == x[-1]”这一行打印出 False? 我确实明白发生了什么,但我很难用简单的英语表达出来...如何描述这种行为?
这是一个常用/经常使用的“技巧”吗?
我第一次遇到这种特殊的语法是在尝试递归地解决回文练习时。似乎使递归工作的唯一方法是使用这种速记方法:
def isPalindrome(s):
if len(s) <= 1: return True
else: return s[0] == s[-1] and isPalindrome(s[1:-1])
print isPalindrome('anna')
谢谢 粑粑
最佳答案
抱歉,我不完全确定你的意思,但可以这样想:
return (x[0] == x[-1])
如果您只考虑括号内的内容,您就会意识到,该“语句”等同于一个 bool 值,对吧?这就是为什么你也可以这样做:
if x[0] == x[-1]
基本上,这里返回的是一个 bool 值,表示 x[0] 是否等于 [-1]。
可以更明确地将此声明扩展为如下内容:
if x[0] == x[-1]: # if this is true
return True # then return true
else:
return False
但是如您所见,条件和您想要返回的值是相同的值,所以就像您看到的那样简写:
return x[0] == x[-1]
抱歉,如果我误解了你的问题。
编辑:如果您提到负索引 (x[-1]
),在 Python 中,负索引基本上是“环绕”,所以 x[0]
可以说是“从左到右”的第一个元素,x[-1]
循环使得它是“右”的第一个元素-向左'。
关于python - 关于返回表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580228/