在python 3中将字符串列表检查为回文
我正在检查一个字符串列表,看看列表中的每个字符串是否都是回文。 我需要一个for循环来测试列表中所有字符串的函数 l=[“安娜”, “公民”, “计算机” ] 首先,我编写了如下代码:在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。非真假
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