gpt4 book ai didi

python - 如何对颠倒的单词进行列表理解?

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:42 26 4
gpt4 key购买 nike

我正在编写一些关于列表推导的代码,程序需要做的是从标准输入中打印任何长度至少为 5 个字符(我已经完成)的回文,并且还反转。例如“Damon”“nomad”“revel”“lever”都应该和回文词放在一个表中。

我尝试了 stackoverflow 和其他编程网站寻求帮助,任务已正确完成但不是列表理解形式。

import sys
line = sys.stdin
all_text = [a.strip() for a in line]
atleast_5_letters = [a for a in all_text if len(a) >= 5]
reverse_words = [a for a in atleast_5_letters]
palindrome = [a for a in atleast_5_letters if a[::-1].upper() == a.upper()]
print(palindrome)

#stdin input:
#Ababa
#aaaaa
#bob
#civic
#ccccc
#Damon
#england
#Hannah
#lager
#leper
#level
#lever
#madam
#minim
#nomad
#radar
#racecar
#RaCeCar
#refer
#regal
#repel
#revel
#rever
#rotor
#tenet
#queen

['Ababa', 'civic', 'Damon', 'Hannah', 'lager', 'leper', 'level', 'lever', 'madam', 'minim', 'nomad', 'radar ', 'refer', 'regal', 'repel', 'revel', 'rever', 'rotor', 'tenet']

最佳答案

首先,我会得到一组由五个字母组成的小写单词(这使下一步更容易):

atleast_5_letters_lower = set([w.lower() for w in atleast_5_letters])

然后,从列表中找出该单词在集合中也作为反转出现的单词,忽略大写,但保留原始大写:

reverse_words = [a for a in atleast_5_letters if a[::-1].lower() in atleast_5_letters_lower]

输入单词的结果:

['Ababa', 'aaaaa', 'bob', 'civic', 'ccccc', 'Damon', 'Hannah', 'lager', 'leper', 'level', 'lever', 'madam', 'minim', 'nomad', 'radar', 'racecar', 'RaCeCar', 'refer', 'regal', 'repel', 'revel', 'rever', 'rotor', 'tenet']

关于python - 如何对颠倒的单词进行列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com