2024-05-14 05:50:15 发布
网友
如何进行for循环并更改列表中的条目?类似于[line.strip() for line in lines]的等价物,只是line.strip()被保存回行列表。
[line.strip() for line in lines]
line.strip()
这是必需的,因为我使用的是存储在列表中的大型数据集。该数据集将用于机器训练以训练分类器。特别是使用NLTK库的自然语言处理。因此,复制数组是不可行的。
是否要将结果存储到同一实例lines(不替换为新的列表实例)?
lines
lines[:] = [line.strip() for line in lines]
如果我理解正确的话,您将尝试从文件中删除行,而不是创建一个全新的列表。问题是,在Pythonstrings are immutable中,不能就地修改字符串,必须创建一个新字符串。
正如其他人所建议的,生成器表达式将按需生成剥离的字符串,而不是将它们全部存储在新列表中,从而减少内存需求。如果您真的想将字符串剥离到适当的位置,那么这样的操作将完成:
for i, line in enumerate(lines): lines[i] = line.strip()
但无论如何,创建一个新列表可能会更快。
使用生成器表达式,则不会同时保留所有行。
glines = (line.strip() for line in lines)
是否要将结果存储到同一实例
lines
(不替换为新的列表实例)?如果我理解正确的话,您将尝试从文件中删除行,而不是创建一个全新的列表。问题是,在Pythonstrings are immutable中,不能就地修改字符串,必须创建一个新字符串。
正如其他人所建议的,生成器表达式将按需生成剥离的字符串,而不是将它们全部存储在新列表中,从而减少内存需求。如果您真的想将字符串剥离到适当的位置,那么这样的操作将完成:
但无论如何,创建一个新列表可能会更快。
使用生成器表达式,则不会同时保留所有行。
相关问题 更多 >
编程相关推荐