3

Python で「偶数のみ」の 16 進グリッドを作成しようとしています。

期待される出力は

[[(0,0), (2,0), (4,0), (6,0)],
 [(1,1), (3,1), (5,1), (7,1)],
 [(0,2), (2,2), (4,2), (6,2)],
 [(1,3), (3,3), (5,3), (7,3)]]

私はこれをいじっていました:

>>> [[(x,y) for x in range(7)[::2]] for y in range(4)]
[[(0,0), (2,0), (4,0), (6,0)],
 [(0,1), (2,1), (4,1), (6,1)],
 [(0,2), (2,2), (4,2), (6,2)],
 [(0,3), (2,3), (4,3), (6,3)]]

しかし、そこから次に行った場所では例外がスローされます。

>>> [[(x,y) for x in xrange(y % 2, 6 + (y % 2))[::2]] for y in range(4)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence index must be integer, not 'slice'
4

2 に答える 2

0

質問を投稿する際に、必要なジェネレーターを作成しました。

>>> [[(x,y) for x in range(8)[y % 2::2]] for y in range(4)]
[[(0,0), (2,0), (4,0), (6,0)],
 [(1,1), (3,1), (5,1), (7,1)],
 [(0,2), (2,2), (4,2), (6,2)],
 [(1,3), (3,3), (5,3), (7,3)]]

xrangeただし、バージョンがクラッシュした理由はわかりません。

于 2015-05-03T02:34:49.827 に答える