Python 检查是否回文

Python 检查是否回文,python,string,python-3.x,palindrome,Python,String,Python 3.x,Palindrome,编译此代码时,它将None显示为输出 list = ["malayalam"] reverse_list = list.reverse() print(reverse_list) while list == reverse_list: print('the answer is palindrome') 相反,要反转字符串本身 使用以下命令 >>> a = "Malayalam" >>> rev = a[::-1] >>> if a

编译此代码时,它将
None
显示为输出

list = ["malayalam"]
reverse_list = list.reverse()
print(reverse_list)
while list == reverse_list:
    print('the answer is palindrome')

相反,要反转字符串本身

使用以下命令

>>> a = "Malayalam"
>>> rev = a[::-1]
>>> if a == rev:
>>>   print("palindrome")
>>> else:
>>>   print("Not a palindrome")

相反,要反转字符串本身

使用以下命令

>>> a = "Malayalam"
>>> rev = a[::-1]
>>> if a == rev:
>>>   print("palindrome")
>>> else:
>>>   print("Not a palindrome")
reverse()变异原始列表,不返回新列表。 所以reverse\u list=list.reverse()使reverse\u list为None

这里有一个答案,你可能想看看

reverse()对原始列表进行变异,不返回新列表。 所以reverse\u list=list.reverse()使reverse\u list为None

这里有一个答案,你可能想看看

您在python中使用了错误的反向函数请尝试此函数

def is_palindrome1(st):
    ln = len(st)
    for i in range(ln//2):
        if st[i] != st[ln - 1 - i]:
            return False
    return True

def is_palindrome2(st):
    lst=list("malayalam")
    reversed_list=list(reversed(lst))
    return lst == reversed_list

def is_palindrome3(st):
    p1 = st[:len(st)//2]
    p2 = st[(len(st)+1)//2:]
    return p1 == p2

lst = "malayalam"

if is_palindrome1(lst):
    print('the answer is palindrome')
else:
    print('not palindrome')

你在python中使用了错误的反向函数,试试这个

def is_palindrome1(st):
    ln = len(st)
    for i in range(ln//2):
        if st[i] != st[ln - 1 - i]:
            return False
    return True

def is_palindrome2(st):
    lst=list("malayalam")
    reversed_list=list(reversed(lst))
    return lst == reversed_list

def is_palindrome3(st):
    p1 = st[:len(st)//2]
    p2 = st[(len(st)+1)//2:]
    return p1 == p2

lst = "malayalam"

if is_palindrome1(lst):
    print('the answer is palindrome')
else:
    print('not palindrome')

为什么它说没有?

举个例子

>>> mylist = [1, 2, 3, 4, 5]
>>> mylist
[1, 2, 3, 4, 5]

>>> mylist.reverse()
None

>>> mylist
[5, 4, 3, 2, 1]
正如您所看到的,调用mylist.reverse()没有返回任何结果,但修改了原始列表对象。Python标准库的开发人员特意选择了此实现:

在反转大序列时,reverse()方法会在位修改序列,以节省空间。为了提醒用户它是通过副作用操作的,它不会返回相反的顺序

因此,在您的情况下,它应该打印None,并且由于list==reverse\u list的计算结果为false,因此除了上一个之外,不会打印任何内容。原因在前面已经解释过了

希望您想检查一个单词是否有回文,如果有,您不需要列表。下面的解决方案使用一些内置函数来实现这一点

word = "malayalam"
rev = ''.join(reversed(word))

if (word == rev):
    print('the answer is palindrome')
else:
    print('the answer is not a palindrome')

为什么它说没有?

举个例子

>>> mylist = [1, 2, 3, 4, 5]
>>> mylist
[1, 2, 3, 4, 5]

>>> mylist.reverse()
None

>>> mylist
[5, 4, 3, 2, 1]
正如您所看到的,调用mylist.reverse()没有返回任何结果,但修改了原始列表对象。Python标准库的开发人员特意选择了此实现:

在反转大序列时,reverse()方法会在位修改序列,以节省空间。为了提醒用户它是通过副作用操作的,它不会返回相反的顺序

因此,在您的情况下,它应该打印None,并且由于list==reverse\u list的计算结果为false,因此除了上一个之外,不会打印任何内容。原因在前面已经解释过了

希望您想检查一个单词是否有回文,如果有,您不需要列表。下面的解决方案使用一些内置函数来实现这一点

word = "malayalam"
rev = ''.join(reversed(word))

if (word == rev):
    print('the answer is palindrome')
else:
    print('the answer is not a palindrome')

是否在REPL中运行此操作?是否要检查列表是否为回文?或者它包含回文?或者你不是真的需要一个列表,并且你弄错了吗?正如@xtofl所说的,请正确地陈述你的需求。另外,我要求所有为这个问题写答案的人等待一段时间,让OP更简要地解释他的问题。你是在REPL中运行这个吗?你想检查列表是否是回文的吗?或者它包含回文?或者你不是真的需要一个列表,并且你弄错了吗?正如@xtofl所说的,请正确地陈述你的需求。另外,我要求所有为这个问题写答案的人,等一段时间,让OP更简短地解释他的问题。