在添加之前检查一个项目是否已经在列表中是否更有效:
for word in open('book.txt','r').read().split():
if word in list:
pass
else:
list.append(item)
或者添加所有内容然后在其上运行 set()?像这样:
for word in open('book.txt','r').read().split():
list.append(word)
list = set(list)
请您参考如下方法:
如果最终目的是构造一个集合,直接构造它,不要理会列表:
words = set(open('book.txt','r').read().split())
这将是简单而高效的。
就像您的原始代码一样,这具有首先将整个文件读入内存的缺点。如果这是一个问题,可以通过一次读取一行来解决:
words = set(word for line in open('book.txt', 'r') for word in line.split())
(感谢@Steve Jessop 的建议。)
绝对不要在您的问题中采用第一种方法,除非您知道列表很短,因为它需要扫描整个列表中的每个单词。
