青鸟飞扬教育:文件的猪拉丁语翻译

文件的猪拉丁语翻译

列表推导式在你想转换列表时非常有用。但实际上,它们可以作用于任何可迭代对象——也就是说,任何你可以运行for循环的 Python 对象。这意味着列表推导式的源数据可以是字符串、列表、元组、字典、集合,甚至是文件。

在这个练习中,我希望你编写一个函数,该函数接受一个文件名作为参数。它返回一个字符串,包含文件的内容,但每个单词都翻译成了猪拉丁语,正如我们在第二章“字符串”中提到的plword函数。返回的翻译可以忽略换行符,并且不需要以任何特定方式处理大小写和标点符号。

解决方案

我们已经看到嵌套列表推导式可以用来遍历复杂的数据结构。在这种情况下,我们正在遍历一个文件。实际上,我们可以遍历文件的每一行。

但我们可以进一步分解问题,使用嵌套列表推导式首先遍历文件的每一行,然后遍历当前行中的每个单词。然后我们的plword函数可以一次操作一个单词。

我意识到嵌套列表推导式可能很难阅读和理解,至少一开始是这样。但随着你使用它们,你可能会发现它们允许你优雅地将问题分解为其组成部分。

我们在这里做了一些事情,但一开始可能不明显。列表解析,由于其本质,会产生列表。这意味着如果我们把一个大文件翻译成猪拉丁语,我们可能会发现自己有一个非常长的列表。更好的做法是返回一个迭代器对象,它会节省内存,只为每次迭代计算必要的最小值。

结果证明,这样做相当简单。我们可以使用生成器表达式(如本章第一个练习中建议的),它看起来几乎与列表解析完全相同,但使用圆括号而不是方括号。我们可以将生成器表达式放入 str.join 的调用中,就像我们可以放入列表解析一样,在这个过程中节省内存。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容