0

私はこのワンライナーを持っています:

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]]

しかし、それはかなりきちんとしていないように見えますが、誰かがそれを改善できますか?

4

3 に答える 3

4
board = [map(int, line.split()) for line in boardFile]

またはboard = [list(map(int, line.split())) for line in boardFile]Python 3で。

于 2013-09-27T20:05:45.933 に答える
0

複数の隣接するスペースで線を定義する方法によっては、これがより簡単になる場合があります。

import sys
r=csv.reader(boardFile, delimiter=' ')
board=list(r)
于 2013-09-27T20:00:23.217 に答える