您最初关于 python 独特性的说法是不正确的。如果运行 Java 代码,则打印以下内容lines
您将看到该数组包含原始未剥离的字符串,其原因与 python 中的字符串相同。
您可以按索引浏览并以这种方式就地修改
for i, _ in enumerate(lines_list):
lines_list[i] = lines_list[i].strip()
虽然我认为如果列表不是太大而导致问题,很多人会更喜欢复制列表的简单性
lines_list = [line.strip() for line in lines_list]
问题是使用=
运算符重新分配给变量line
,它不会做任何事情来影响原始字符串的内容。新的 Python 程序员在遇到以下情况时同样会感到惊讶:
for i in range(10):
print(i)
i += 1
打印数字 0,1,2,3,4,5,6,7,8,9。发生这种情况是因为 for 循环重新分配i
在每次迭代开始时到范围中的下一个元素。这不完全是你的问题,但很相似。
由于您正在从文件中读取行,然后将其剥离,所以您真正应该做的是
with open(file_name) as f:
lines_list = [line.strip() for line in f]
一次读取并剥离一行,而不是先读取所有内容,然后再剥离行