Python回文检查器运行返回空列表 无法得到正确筛选结果
问题现象
编写了如下Python代码用于筛选单词列表中的回文词:
words = ['Anna', 'Alexey', 'Alla', 'Kazak', 'Dom'] def palindrome(): filtered_2 = list(filter(lambda x: x == x[::-1], words)) print(filtered_2) palindrome()
代码预期返回列表内的所有回文词,预期输出为:
['Anna', 'Alla', 'Kazak']
但实际运行后仅输出空列表:
[]
故障原因
Python的字符串等值判断是大小写敏感的,列表中的回文词均为首字母大写、其余字母小写的格式,直接比较会出现判定错误:
- 以
'Anna'为例,直接反转后得到的字符串是'annA',首字符为大写A、尾字符为小写a,和原字符串做相等判断时返回False 'Alla'、'Kazak'的判定逻辑完全一致,所有单词都无法通过相等校验,最终filter返回空结果。
修改方案
判断回文前,先将单词统一转换为全小写(或全大写)格式,再做反转比较即可,修改后代码如下:
words = ['Anna', 'Alexey', 'Alla', 'Kazak', 'Dom'] def palindrome(): # 统一转小写后再比较正序和倒序内容 filtered_2 = list(filter(lambda x: x.lower() == x.lower()[::-1], words)) print(filtered_2) palindrome()
运行上述代码即可得到预期输出['Anna', 'Alla', 'Kazak']。
内容的提问来源于stack exchange,提问作者Teriyaki
相关产品推荐
相关产品推荐

