-1

リストのリストが与えられた場合:

>>> n=4
>>> LoL=[range(n) for i in range(n)]
>>> LoL
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

このようにN x N行列を保証することは、容易に明らかで、理解しやすく、Pythonicでもありますか?

>>> len(LoL) == n and {len(l) for l in LoL} == {n}
True

したがって、次のように使用されます。

if len(matrix) != 4 or {len(l) for l in matrix} != {4}:
        raise ValueError

より良い代替イディオムはありますか、それとも理解できますか?

4

1 に答える 1

0

あなたのコメントで述べられているように、/を試してみてください。

4x4サイズ以外の要素をキャッチして使用しようとするだけでなく、渡された間違った寸法もキャッチします。

>>> LoL=[1,2,3,4]
>>> len(LoL) == n and {len(l) for l in LoL} == {n}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <setcomp>
TypeError: object of type 'int' has no len()

対、使用しようとしているデータについて疑問がある場合:

>>> try: 
...    i=LoL[2][2]
... except IndexError:
...    print 'no bueno...'
... 
no bueno...
于 2012-09-06T03:22:06.473 に答える