Python:在深层嵌套列表中搜索值

时间:2020-06-21 18:46:24

标签: python multidimensional-array

我有一个很长的嵌套列表,看起来像这样

['a','b',['c','d',['e',['a','b',['c','d',['e',['a','b',['c','d',['e4',['a','b',['c','d',['e',['a','b',['c','d',['e',['a','b',['c','d',['e14']]]]]],]]]]]]]]],]]]

我正在尝试在该列表中找到value,但是对于我来说,正常的for循环不起作用,因为我需要遍历每个循环,这会花费很长时间。

我想出了这个递归函数:

def locate(seq :list, value:int):
    for item in seq:
        if item.__class__ is list:
            locate(item, value)
        else:
            if(item == value):
                return True
    return False

这是我为算法创建的单元测试:

import unittest

class TestCase(unittest.TestCase):
    def test_locate(self):
        self.assertEqual(locate(['a','b',['c','d',['e']]],'e'), True)

    def test_locate_two(self):
        self.assertEqual(locate(['a','b',['c','d',['e',['a','b',['c','d',['e',['a','b',['c','d',['e4',['a','b',['c','d',['e',['a','b',['c','d',['e',['a','b',['c','d',['e14']]]]]],]]]]]]]]],]]],'e'), True)

    
if __name__ == '__main__':
    unittest.main()

测试结果:

Ran 2 tests in 0.001s

FAILED (failures=2)

1 个答案:

答案 0 :(得分:1)

因此,我尝试了此修改:

def locate(seq :list, value:int):
el_check = False
for item in seq:
    if item.__class__ is list:
        el_check = el_check or locate(item, value)
    else:
        if(item == value):
            return True
return el_check

似乎可以在几次测试中使用,如果您发现无法解决的情况,请发布,以便我尝试查看。