Python:返回的列表长度为其长度的两倍

时间:2018-10-02 08:36:49

标签: python python-3.x list

我正在读取一个包含235886字符串的文件女巫。我正在使用with从文件中读取所有这些字符串,并将它们附加到一个空列表中。由于文件中的每个字符串都附加了换行符\n,因此我仅使用split()函数来提取字符串。

当我打印列表的长度时,它显示的是其大小471772的两倍。

我的代码在这里。

word_list = []
DICTIONARY =  'dictionary.txt'

def load_words():
    with open(DICTIONARY,'r') as dictwords :
        for word in dictwords:
            word_list.append(word.split('\n')[0])
        print(len(word_list))
    return word_list

load_words()

输出显示为

235886
471772

我无法找出我做错了什么。任何帮助,不胜感激。

完整代码

from data import DICTIONARY, LETTER_SCORES

word_list = []
scrabble_dict = {}

def load_words():

    with open(DICTIONARY,'r') as dictwords :
        for word in dictwords:
            word_list.append(word.split('\n')[0])
        print(len(word_list))
    return word_list

load_words()

def calc_word_value(word):
    sum = 0 
    for char in word:
        if char.isalpha():
            sum = sum + LETTER_SCORES[char.upper()]
    return sum

def max_word_value(word_list = load_words() ):
    higher_sum = 0 
    higher_word = None 

    for every_word in word_list:
        present_sum = calc_word_value(every_word)
        if present_sum > higher_sum:
            higher_word = every_word
            higher_sum = present_sum

    return higher_word


if __name__ == "__main__" :
    pass

1 个答案:

答案 0 :(得分:1)

您两次调用load_words,并且由于word_list是全局变量,因此所有单词都被附加两次。通过将第一次调用的结果存储在变量中来对其进行更改:

l_words = load_words()

# ...

def max_word_value(word_list=l_words):
    # ...