我最近写了一个循环的方法/usr/share/dict/words
并使用我的返回回文列表ispalindrome(x)
方法
这是一些代码...有什么问题吗?它只会停止 10 分钟,然后返回文件中所有单词的列表
def reverse(a):
return a[::-1]
def ispalindrome(a):
b = reverse(a)
if b.lower() == a.lower():
return True
else:
return False
wl = open('/usr/share/dict/words', 'r')
wordlist = wl.readlines()
wl.close()
for x in wordlist:
if not ispalindrome(x):
wordlist.remove(x)
print wordlist
wordlist = wl.readlines()
当您执行此操作时,末尾会出现一个换行符,因此您的列表如下所示:
['eye\n','bye\n', 'cyc\n']
其中的元素显然不是回文。
你需要这个:
['eye','bye', 'cyc']
So strip
换行符应该没问题。
要在一行中完成此操作:
wordlist = [line.strip() for line in open('/usr/share/dict/words')]
编辑:迭代列表并修改它会导致问题。使用列表理解,如所指出的Matthew https://stackoverflow.com/questions/4666339/python-and-palindromes/4666444#4666444.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)