-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

如您的评论中所述,尝试 / except 可能更好。

您不仅会捕获并尝试使用 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()

Vs,如果您对即将使用的数据有疑问:

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