Python比较运算符

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

我不明白为什么我的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

    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之间的区别)