我是一名编程新手,希望获得一些帮助来理解为什么以下算法以特定方式运行。
我的目标是让函数读取包含单词(可以大写)的文本文件,去除空格,将项目拆分为单独的行,将所有首字母大写的字符转换为小写,删除所有单个字符(例如,“a”, “b”、“c”等),并将生成的单词添加到列表中。所有单词都将成为列表中的单独项目以供进一步处理。
输入文件:文本文件('sample.txt')包含以下数据 - “a apple b Banana c cherry”
期望的输出:['apple', 'banana', 'cherry']
在我最初的尝试中,我尝试遍历单词列表以测试它们的长度是否等于 1。如果是,则该单词将从列表中删除,而其他单词则保留在列表中。这导致了以下非预期的输出:[None, None, None]
filename = ‘sample.txt’
with open(filename) as input_file:
word_list = input_file.read().strip().split(' ')
word_list = [word.lower() for word in word_list]
word_list = [word_list.remove(word) for word in word_list if len(word) == 1]
print(word_list)
产生的非预期输出 = [None, None, None]
我的下一个尝试是遍历单词列表以测试它们的长度是否大于 1。如果是,则将单词添加到列表中(留下单个字符)。使用此方法实现了所需的输出。
filename = ‘sample.txt’
with open(filename) as input_file:
word_list = input_file.read().strip().split(' ')
word_list = [word.lower() for word in word_list]
word_list = [word for word in word_list if len(word) > 1]
print(word_list)
产生所需的输出 = ['apple', 'banana', 'cherry']
我的问题是:
为什么最初的代码看起来最合乎逻辑、最有效,却没有产生预期的结果?
达到预期结果的最佳“Pythonic”方式是什么?
小怪兽爱吃肉
慕码人2483693
FFIVE
千巷猫影
相关分类