Python搜索嵌套列表

时间:2016-03-11 17:22:03

标签: python nested-lists

如果我有一个嵌套列表列表,那么在特定索引中搜索包含特定变量的子列表的最简单方法是什么?例如,如果我有一个如下所示的列表;

mylist = ['aa',1,2,['bb',33],3,['bb',55],56,27,['cc',2],['bb',2,['bb',4]],4,['dd',5,7]]

在此列表中搜索具有&#bb'的列表的首选pythonic方法是什么?在索引0(列表中的第一项)?我希望看到结果;

['bb',33],['bb',55],['bb',2,['bb',4]],['bb',4] 

3 个答案:

答案 0 :(得分:2)

您应该尝试使用递归函数

def list_search(slist):
     for count, item in enumerate(slist):
         if(item.__class__ is list):
             list_search(item)
         else:
             if(count == 0 and item == 'bb'):
                 print(slist)

这应该用于独立于深度的嵌套。

答案 1 :(得分:0)

递归效果很好,就像使用__class__魔术成员一样:

def recursive_match(the_list):
    index = 0

    for item in the_list:
        print(repr(item))

        if item.__class__ is list:
            recursive_match(item)
        elif index == 0 and item == 'bb':
            print('match')

        index += 1

mylist = ['aa',1,2,['bb',33],3,['bb',55],56,27,['cc',2],['bb',2,['bb',4]],4,['dd',5,7]]
recursive_match(mylist)

答案 2 :(得分:0)

def findList(L, argument, index):
    if L[index] == argument:
        print L
    for element in L:
        if type(element) == list:
            findList(element, argument, index)

这可能也有效,使您能够选择要搜索的参数和索引。但这个想法当然是使用递归。