在python中声明二维列表

时间:2018-12-03 21:16:56

标签: python assert

在python中,我试图检查给定列表是否为二维列表。我应该使用断言语句,但是我不知道如何创建一个。

到目前为止我有

assert type(x) == list

我知道这是不正确的,并检查一维列表。我该如何解决?

2 个答案:

答案 0 :(得分:2)

检查x是否已作为列表

assert type(x) == list

检查x是否为列表,x的元素是否为列表-

assert type(x)==list
assert reduce(lambda a,b : type (b) == list and a, x, True)

检查x是否为列表,x的元素是否为列表,并且每个元素的长度相同-

assert type(x)==list
assert reduce(lambda a, b: type (b) == list and a, x, True)
l = len(x[0])
assert reduce(lambda a, b: len(b) == l and a, x, True)

您可以使用reduce代替all,以使其更具可读性。

检查x是否为列表,x的元素是否为列表,并且每个元素的长度相同-

assert type(x)==list
assert all([type(i) == list for i in x])
l = len(x[0])
assert all([len(i) == l for i in x])

答案 1 :(得分:0)

我做到了...

l=[[]] assert type(l) == list and type(l[0]) == list

但是我在一维的情况下得到了indexError,所以我改用了它。

l=[]
try:
    assert type(l) == list and type(l[0]) == list
except IndexError:
        assert False

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
AssertionError

也许有更好的方法,但对我来说并不明显。

一种更好(但but绕)的方法可能是...

 assert type(l) == list and len({ type(el) for el in l }) == 1 and { type(el) for el in l }.pop() == list