Python比较运算符
我不明白为什么我的if-else语句没有按预期运行。我尝试创建代码来测试回文字符串。我的print函数告诉我反向方法是有效的,但是当我进入比较阶段时,我无法让它返回True 代码如下:Python比较运算符,python,comparison-operators,Python,Comparison Operators,我不明白为什么我的if-else语句没有按预期运行。我尝试创建代码来测试回文字符串。我的print函数告诉我反向方法是有效的,但是当我进入比较阶段时,我无法让它返回True 代码如下: def is_palindrome(a): myList = [] for i in a: myList.append(i) print myList new = myList.reverse() print myList print new
def is_palindrome(a):
myList = []
for i in a:
myList.append(i)
print myList
new = myList.reverse()
print myList
print new
if myList == new:
return True
else:
return False
print is_palindrome("radar")
这返回False。我还尝试将if语句更改为,如果myList是新的:
,但不幸的是,它仍然返回False
任何洞见,谢谢 list.reverse()
已就位,这意味着它将反转调用它的列表,但不返回任何内容
行print new
应打印None
,因此myList==new
将为False
相反,请使用[::-1]
,它不在适当的位置并返回一个新的反向列表,或者使用更简单的方法来检测回文,例如:
def is_palindrome(iterable):
return iterable == iterable[::-1]
list.reverse()
已就位,这意味着它将反转调用它的列表,但不返回任何内容
行print new
应打印None
,因此myList==new
将为False
相反,请使用[::-1]
,它不在适当的位置并返回一个新的反向列表,或者使用更简单的方法来检测回文,例如:
def is_palindrome(iterable):
return iterable == iterable[::-1]
谢谢我理解就地的概念,但为什么它不将该列表返回/保存到变量
new
?编辑:刚刚看到你的后续报道,谢谢@因为根据定义,当一个方法“就位”时,它不会返回任何东西。@arumiat因为行new=myList.reverse()
不会返回任何东西,它只是更改了myList。我不确定你是否理解这个概念…@DeepSpace好的,但是reversed
不会返回新列表。。。所以这种比较是行不通的…@DeepSpace没有-它在2.x或3.x中从来没有过。。。(听起来你把它和map
/zip
等混淆了……2和3之间的区别)谢谢。我理解就地的概念,但为什么它不将该列表返回/保存到变量new
?编辑:刚刚看到你的后续报道,谢谢@因为根据定义,当一个方法“就位”时,它不会返回任何东西。@arumiat因为行new=myList.reverse()
不会返回任何东西,它只是更改了myList。我不确定你是否理解这个概念…@DeepSpace好的,但是reversed
不会返回新列表。。。所以这种比较是行不通的…@DeepSpace没有-它在2.x或3.x中从来没有过。。。(听起来你把它和map
/zip
等混淆了……2和3之间的区别)