在python中,我试图检查给定列表是否为二维列表。我应该使用断言语句,但是我不知道如何创建一个。
到目前为止我有
assert type(x) == list
我知道这是不正确的,并检查一维列表。我该如何解决?
答案 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