您可以这样做:
a1 = []
a2 = []
a3 = []
a4 = []
with open('f1.txt') as f:
for line in f:
data = line.split()
a1.append(int(data[0]))
a2.append(int(data[1]))
a3.append(int(data[2]))
a4.append(int(data[3]))
首先,我们使用
with
语句打开文件。这将确保即使出现错误,文件也会自动关闭。这样做更好。在文件打开时,
f
将是文件句柄。
现在,Python 允许我们通过对文件句柄进行迭代来迭代文件的所有行。因此,
for line in f
将自动迭代所有行。没有必要首先调用
readlines()
,当然也不需要执行
lines[0:len(lines)]
,这本质上只创建列表的副本 - 您也可以遍历
lines
。
现在,在循环内部,我们获取该行,并按空格拆分它 - 如果没有参数,则
str.split
总是这样做。
str.split
返回一个列表,因此我们将其存储在一个额外变量中。接下来,我们将每个列附加到正确的列表中。由于您希望将值作为数字获取,因此我们将它们转换为整数。
你提到的
str.strip
基本上将删除字符串的任何前导或尾随空格。由于我们正在使用没有参数的
str.split
,因此额外的空格也将被删除,因此我们不需要它。
最后,维护四个单独变量中的四个单独列表有点麻烦。您可以简单地创建一个列表的列表:
a = [[], [], [], []] # A list with four empty lists
接着,在循环内部,您可以将 data[i]
直接附加到 a[i]
中:
for i, value in enumerate(line.split()):
a[i].append(int(value))
当使用
enumerate
进行迭代时,不仅可以获取值(如果只对列表进行迭代也可以获取到),还可以获取索引。因此,我们可以使用这个索引获取拆分后每个元素的索引,并自动将其附加到
a
的正确子列表中。