如何编写Python单行代码生成文件所有单词组成的列表?
问题解答
1. 可行的单行实现
存在满足需求的单行代码,直接使用无参数的split()方法即可:
l = open(file).read().split()
运行后得到的结果为['abc', 'xyz', 'abc', 'mno', 'tuv', 'xyz', 'qrs', 'abc'],完全符合预期。
如果需要更规范地自动处理文件关闭,也可以用推导式实现:
l = [word for line in open(file) for word in line.split()]
2. 集合代码无换行问题的原因
你之前的集合代码可以正常运行,和set本身没有关系,核心差异是两次split调用的参数不同:
- 生成集合时使用的是无参数
split():Python中无参数的split会默认按所有空白字符(包括空格、换行符\n、制表符\t等)做分割,同时自动忽略首尾空白和连续空白,换行符会直接被当成分隔符处理,不会残留到单词内容中。 - 你编写列表代码时使用的是
split(" "):此时Python只会按单个空格作为分割依据,换行符不属于空格,所以会被保留在拆分后的字符串里,才会出现带\n的异常元素。
内容的提问来源于stack exchange,提问作者Richard Gostanian
相关产品推荐
相关产品推荐

