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

在python 3中将字符串列表检查为回文,python,palindrome,Python,Palindrome,我正在检查一个字符串列表,看看列表中的每个字符串是否都是回文。 我需要一个for循环来测试列表中所有字符串的函数 l=[“安娜”, “公民”, “计算机” ] 首先,我编写了如下代码: def is_it_palindrome(list): for x in list: if x.upper() == x[::-1].upper(): return True else: return False 当我运行这段代码时,它只返回一个True。非真假

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

l=[“安娜”, “公民”, “计算机” ]

首先,我编写了如下代码:

def is_it_palindrome(list):
for x in list:
    if x.upper() == x[::-1].upper():
        return True
    else:
        return False
当我运行这段代码时,它只返回一个True。非真假 然后我更改代码:

def is_it_palindrome(list):
for x in list:
    if x.upper() == x[::-1].upper():
        print("True")
    else:
        print("False")
它起作用了。但是,谁能告诉我为什么第一个不起作用,第二个是真的还是假的。
谢谢。

第一个def不起作用的原因是因为您正在使用
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函数来编写,这是一种更具python风格的方式,但有时我会对它感到困惑

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

打印vs返回结果而不打印。。。尝试打印(是回文(列表)(修复缩进!不要使用
列表)
return
完成函数执行。如果要收集多个结果,请将它们放入列表并返回列表,或者使用
yield
。您想做什么?检查所有字符串是否为回文?或者返回布尔值列表?只需返回布尔值列表。谢谢。@Jean-François Fabrehover,当我运行第一个代码,它显示“list”对象不可调用。@慧中,它在我的计算机上运行得很好,我能想到的唯一一件事是,你调用了名为
list
中的某个变量,它隐藏了内置函数
list