tek*_*agi 2 python arrays file list palindrome
我最近写了一个方法来循环/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()
Run Code Online (Sandbox Code Playgroud)
执行此操作时,最后会有一个换行符,因此您的列表如下:
['eye\n','bye\n', 'cyc\n']
Run Code Online (Sandbox Code Playgroud)
其元素显然不是回文.
你需要这个:
['eye','bye', 'cyc']
Run Code Online (Sandbox Code Playgroud)
所以strip新行字符应该没问题.
要在一行中执行此操作:
wordlist = [line.strip() for line in open('/usr/share/dict/words')]
Run Code Online (Sandbox Code Playgroud)
编辑:迭代列表并修改它会导致问题.正如马修所指出的,使用列表理解.
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |