在哪些条件下,列表在python中变成一个字符串?

时间:2013-09-05 02:47:06

标签: python

你好我们这里有一小段代码让我很头疼。在这个函数中,我定义了一个名为word的列表,突然之间列表变成了一个字符串。我不知道这怎么可能:

def find_best_shift(wordlist, text):
    words = []
    word = []
    for x in range(0, 27):
        apply_shift(text, x)
        for character in text:
            print (type(word))
            if (character in ALPHABET) or (character in alphabet):
                word.append(character)
            else:
                wor = ''.join(word)
                words.append(wor)
                word = []
        for word in words:
            y = is_word(wordlist, word)
            if y == True:
                return x

你们注意到打印声明print(type(word))。使用此语句,我得到以下输出:

<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'str'>

然后它给了我以下错误:

File "C:\Users\usuario\Documents\Python Projects\ps4\ps4.py", line 264, in    find_best_shift
word.append(character)
AttributeError: 'str' object has no attribute 'append'

我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:8)

for word in words:

重新指定相同的名称(word)作为words列表的元素,然后转到x的下一个值。将此更改为其他内容。

for item in words:

重用名称会引起一些有趣的问题:(

不要忘记更新

y = is_word(wordlist, word)

y = is_word(wordlist, item)

我会简化

if y == True:

简单地

if y:

如果一起开始链接条件,与布尔文字明确比较可能会产生一些有趣的结果。