整理Python关于读取多维数组的一行代码

2024-10-04 03:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一句话:

board = [[int(cell) for cell in row] for row in [line.split() for line in boardFile]]

它读取如下文本文件:

0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

并创建如下多维数组:

[[0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 1, 0, 0, 0, 0, 0],
 [0, 1, 0, 1, 0, 0, 0, 0, 0],
 [0, 0, 1, 1, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0]]

但是,它看起来很不整洁,有人能改进它吗?你知道吗


Tags: inboardforlinecell数组introw
3条回答
board = [map(int, line.split()) for line in boardFile]

或者python3中的board = [list(map(int, line.split())) for line in boardFile]。你知道吗

简单的方法是

[[int(cell) for cell in line.split()] for line in boardFile]

根据定义具有多个相邻空间的线的方式,这可能更容易:

import sys
r=csv.reader(boardFile, delimiter=' ')
board=list(r)

相关问题 更多 >