相反的词似乎找不到

2024-10-02 00:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做的一件事是查找反向的单词,它们大于或等于5个字符,对于下面的代码,我会查找回文和任何反向相同的单词

然而,我不知道如何找到“达蒙”或“游牧者”

我曾尝试使用sorted()来获取字谜,但无法实现它

import sys

word = []

backword = []

def main():
    for lines in sys.stdin:
        word.append(lines.strip())

    for element in word:
        if len(element.lower()) >= 5 and element.lower() == element[::-1].lower():  
                backword.append(element)        
    print(backword)


if __name__ == '__main__':
    main()

编辑-谢谢你的解决方案,我必须找到另一种快速完成的方法


Tags: 代码inforifmainsyselement单词
2条回答

使用您提供的结构,这将起作用:

words = ['Damon', 'test', 'word', 'nomad']

reverse = []
words_set = set(map(str.lower, words))

for element in words:
    if len(element.lower()) >= 5 and element.lower()[::-1] in words_set:
        reverse.append(element)

print(reverse)

# ['Damon', 'nomad']

如果我理解正确,那么你在列表中查找与列表中另一个单词相反的单词?在这种情况下,你有几个选择

案例1:您可以预先计算反转字符列表,如下所示:

reversed = [element[::-1].lower() for element in word if len(element) >= 5]
backword = [element for element in word if element.lower() in reversed]

制作地图也可能更快:

reversed = map(lambda s: s.lower()[::-1], word)
backword = [element for element in word if element.lower() in reversed]

案例2:您可以按如下方式每次反转并检查:

backword = [element for element in word if element[::-1] in word]

如果您已将未过滤掉的单词大写:

backword = [element for element in word if element[::-1] in word or element[::-1].lower().capitalize() in word]

word中使用混合大小写的情况下,您应该使用情况1,因为您可以预计算这两个值,并且由于存在适当的条件而降低了复杂性

相关问题 更多 >

    热门问题