如果列表中的每个字符串都是回文,我正在检查字符串列表。 我需要一个for循环来测试列表中所有字符串的函数。
1 = ["安娜&#34 ;, "文娱&#34 ;, "计算机" ]
首先,我编写如下代码:
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")
有效。但是,任何人都可以告诉我为什么第一个不起作用而第二个是真的。 谢谢。
答案 0 :(得分:2)
你的第一个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函数编写,这是更多的Pythonic方式,但我有时会混淆它。
str_list =["Anna", "Civic", "Computer" ]
list(map(lambda x: x.upper() == x[::-1].upper() , str_list ))