蟒蛇和回文

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

use*_*312 6

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)

编辑:迭代列表并修改它会导致问题.正如马修所指出的,使用列表理解.