我有一个包含数字的文件,每行有20个数字,如下所示:
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
该文件包含20行这样的行,我想读取该文件并将其转换为2D int列表。
我设法做到了这一点:
with open(file) as f:
t = f.read()
t = t.split()
t = [t[i:i+20] for i in range(20)]
我得到的是2D字符串列表,但我希望它们是整数,以便使用算术运算。我尝试t = [int(t[i:i+20]) for i in range(20)]
,但自TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
我怎么能实现这个目标?
答案 0 :(得分:2)
我强烈建议您使用numpy
代替它,它会更快
import numpy as np
t = np.genfromtxt(file, dtype='int32', delimiter=' ')
否则你可以将其视为
with open(file) as f:
t = [[int(i) for i in line.split(' ')] for line in f]
答案 1 :(得分:1)
您需要将每个元素转换为int,例如使用另一个列表解析
t = [[int(ti) for ti in t[i:i+20]] for i in range(20)]
答案 2 :(得分:1)
这是另一种使用嵌套列表理解的方法。
with open(fname) as f:
t = [[int(u) for u in row.split()] for row in f]
for row in t:
print(row)
在Python 3的最新版本中,您也可以使用这种方式创建t
,它更紧凑,可能更快:
t = [[*map(int, row.split())] for row in f]