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

2024-09-22 10:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

['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)

Tags: inselftrue列表forifvaluedef
1条回答
网友
1楼 · 发布于 2024-09-22 10:25:11

因此,我尝试了这种修改:

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

似乎工作在夫妇的测试,如果你发现一个案件,它不工作,请张贴,所以我可以尝试看看它

相关问题 更多 >