Python:如何断言二维列表存在?
怎么做:
if myList[k][m]:
# step through each item of the subset
while i < len(myList[k][m]):
...
上面的代码不管用。我想检查一下那个列表的第二个维度(也就是'm')是否存在。
4 个回答
-1
在Python中,列表和其他编程语言中的二维数组有些不同。要检查列表是否有第一维,你可以尝试输入
if len(myList) > 0:
# Your Code here
在一个列表中,每个元素可以是另一个列表,或者说是一个二维列表——这个列表的每一行可以有不同数量的列,这和在Java或其他类似语言中的说法不一样。
Integer[][] array = new Integer[10][10]
因此,你必须检查列表中每个元素的维度。
if len(myList) > 0:
for i in range(len(myList)):
if len(myList[i]) > 0:
for j in range(len(myList[i])):
# Do something with myList[i][j]
0
if myList[k] and isinstance(myList[k], list) and myList[k][m]:
pass #do stuff
if len(myList) > k and isinstance(myList[k], list) and len(myList[k]) > m:
pass #do stuff
这些方法有哪个能用吗?
编辑:我加了一个检查,看看myList[k]是不是一个列表。
0
这样怎么样:
for line in your_list:
for element in line:
assert element > whatever
1
你可以使用一个尝试块(try block):
try:
for sublist in mylist:
for item in sublist:
pass # do stuff
except TypeError:
pass # handle stuff here
另外,你也可以这样做:
if hasattr(object, '__contains__'):
pass # the object is iterable!
你需要对每一个你想测试是否可以迭代的对象都应用这个方法。
要检查'k'维度的话:
if hasattr(myList, '__contains__'): # this is sufficient
pass # myList is iterable
else:
raise TypeError
如果你只想检查第二维度('m'):
if all([hasattr(sublist, '__contains__') for sublist in myList]):
pass # myList[_] is iterable
else:
raise TypeError # handle stuff here