在python 3中检查字符串列表作为回文结构

时间:2017-05-22 19:21:13

标签: python palindrome

如果列表中的每个字符串都是回文,我正在检查字符串列表。 我需要一个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")

有效。但是,任何人都可以告诉我为什么第一个不起作用而第二个是真的。 谢谢。

1 个答案:

答案 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 ))