Python:返回的列表长度为其长度的两倍
我正在读一个包含Python:返回的列表长度为其长度的两倍,python,python-3.x,list,Python,Python 3.x,List,我正在读一个包含235886字符串的文件。我通过使用和从文件中读取所有这些字符串,并将它们附加到一个空列表中。由于文件中的每个字符串都附加了一个新行字符\n,因此我使用split()函数只提取字符串 当我打印列表的长度时,它会显示其大小的两倍471772 我的密码在这里 word_list = [] DICTIONARY = 'dictionary.txt' def load_words(): with open(DICTIONARY,'r') as dictwords :
235886
字符串的文件。我通过使用和
从文件中读取所有这些字符串,并将它们附加到一个空列表中。由于文件中的每个字符串都附加了一个新行字符\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
我无法找出我做错了什么。任何帮助,非常感谢
完整代码
您调用了两次
load\u words
,由于word\u list
是一个全局变量,因此所有单词都会追加两次。通过将第一次调用的结果存储在变量中进行更改:
l_words = load_words()
# ...
def max_word_value(word_list=l_words):
# ...
你看过列表中的内容了吗?只有在你调用
load\u words
两次时才会发生这种情况。@Exho它已经解决了。我没有在函数外做任何操作,而是清空了函数内的列表,并使其生效。在收到答案后,请不要更改问题中的代码。我正在回滚那个编辑。(请注意,我不会反对你发布完整代码。只是不要发布“固定”代码。)不,但你可以发布真实代码(函数中没有word\u list=[]
)。发布您的完整代码是可以的。将问题更改为与其他问题相关是不合适的。谢谢您的回答。但是我并没有在我的代码中的任何地方调用max\u word\u value
函数,但仍然要计算函数参数中的表达式?是的,默认参数在定义时被计算并绑定到函数。我想我理解你的意思,Python会计算它,但不会在运行时放入该块,但随着计算的完成,函数调用了两次,对吗?
l_words = load_words()
# ...
def max_word_value(word_list=l_words):
# ...