Python:如何断言二维列表存在?

1 投票
4 回答
949 浏览
提问于 2025-04-18 01:27

怎么做:

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

撰写回答