我有一个文本文件'mapview.txt',其内容是:
1234
5678
9012
我希望结果为:
[[1,2,3,4],[5,6,7,8],[9,0,1,2,]]
我不希望如:
[['1','2','3','4'],['5','6','7','8'],['9','0','1','2']]
我有这样的代码:
getit = open('./mapview.txt')
readit = getit.read()
itsline = readit.split()
line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])
final = [line0,line1,line2]
print final
但结果是
[['1','2','3','4'],['5','6','7','8'],['9','0','1','2']]
我怎么才能得到
[[1,2,3,4],[5,6,7,8],[9,0,1,2,]]
?我需要那个表单,因为我将使用数组中的整数。
有什么建议吗?任何帮助都会很棒。
提前致谢!
答案 0 :(得分:2)
您可以将列表中的所有字符串更改为整数:
map(int, lst)
(map
函数将函数应用于列表的每个项目,int
函数将字符串转换为列表。在您的情况下,您需要更改列表中的所有字符串,因此您需要类似
[map(int, lst) for lst in final]
有关您的代码的另一个注意事项是
line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])
不是一个好主意 - 它只适用于文件中正好有3行。这也可以通过以下方式改进:
final = map(list, itsline)
答案 1 :(得分:2)
要修改您的解决方案,请更改
line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])
到
line0 = [int(i) for i in itsline[0]]
line1 = [int(i) for i in itsline[1]]
line2 = [int(i) for i in itsline[2]]
但是这个列表理解会更有效率:
[[int(i) for i in line.strip()] for line in open('file/path')]
答案 2 :(得分:2)
with open('./mapview.txt') as file:
array2d = [[int(digit) for digit in line.strip()] for line in file]
print(array2d)
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2]]