将字符串列表检查为 python 中的回文 3

Checking a list of strings as palindrome in python 3

我正在检查一个字符串列表,看列表中的每个字符串是否都是回文。 我需要一个 for 循环来测试列表中所有字符串的函数。

l=["Anna", "Civic", "Computer" ]

首先,我编写如下代码:

def is_it_palindrome(list):
for x in list:
    if x.upper() == x[::-1].upper():
        return True
    else:
        return False

当我 运行 这段代码时,它只有 returns 一个 True。不对 对 错 然后我更改我的代码:

def is_it_palindrome(list):
for x in list:
    if x.upper() == x[::-1].upper():
        print("True")
    else:
        print("False")

有效。但是,谁能告诉我为什么第一个不起作用而第二个是真的还是假的。 谢谢。

你的第一个 def 不起作用的原因是因为你使用 return 导致你的函数为 return 值并停止循环。
我建议你使用 map 内置函数如下,注意它可以用更好的方式编写

str_list =["Anna", "Civic", "Computer" ]

def is_it_palindrome(word):
    return word.upper() == word[::-1].upper()

list(map(is_it_palindrome, str_list))

编辑 - 这也可以用 lmbda 函数编写,这是更 Pythonic 的方式,但有时我对它感到困惑。

str_list =["Anna", "Civic", "Computer" ]
list(map(lambda x: x.upper() == x[::-1].upper() , str_list ))