如何进行 for 循环并更改列表中的条目?就像 , 的等价物[line.strip() for line in lines]
,除了line.strip()
保存回行列表。
这是必需的,因为我使用的是存储在列表中的大型数据集。该数据集将用于机器训练以训练分类器。具体来说,使用 NLTK 库的自然语言处理。因此,阵列的复制是不可行的。
这个怎么样:
lines = [line.strip() for line in lines]
它创建了另一个列表(尽管它都存储在内存中,这可能是很多行的问题)。
或者,您可以使用生成器表达式来避免潜在的内存问题,并按需创建行:
lines = (line.strip() for line in lines)
使用生成器表达式,则不会同时保留所有行。
glines = (line.strip() for line in lines)
您是否要将结果存储到同一个实例中lines
(而不是替换为新的列表实例)?
lines[:] = [line.strip() for line in lines]
如果我理解正确,您是在尝试从文件中删除行,而不是创建一个全新的列表。问题是在 Python 中字符串是不可变的,所以你不能就地修改一个字符串,你必须创建一个新的。
正如其他人所建议的那样,生成器表达式将按需生成剥离的字符串,而不是将它们全部存储在新列表中,从而减少内存需求。如果您真的想将字符串剥离到位,那么这样的事情就可以完成:
for i, line in enumerate(lines): lines[i] = line.strip()
但无论如何,创建一个新列表可能会更快。