python - 在列表列表中查找元素

标签 python

我的列表中有一个列表。

我想知道它是否包含感兴趣的项目。

例如:L=[['READ',[A,B],'2'],['WRITE',[C,D],'2']]

现在,我有一个字符串,str=READ,我想迭代两个列表(包括子列表)以查找是否存在这样的元素。有没有一种方法可以在不使用索引的情况下做到这一点?

我不想使用索引,因为不能保证列表长度保持不变。

最佳答案

假设正在搜索的数据结构中没有循环,这就是一个简单的递归问题:

def find(x, L):
    return x in L or any(find(x, sublist)
                         for sublist in L
                         if isinstance(sublist, list))

如果数据结构中可能存在循环,那么您必须防止进入无限递归

def find(x, L, seen=None):
    if seen is None:
        seen = set()
    if id(L) in seen:
        # Avoid infinite recursion
        return False
    seen.add(id(L))
    return x in L or any(find(x, sublist, seen)
                         for sublist in L
                         if isinstance(sublist, list))

关于python - 在列表列表中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18942202/

相关文章:

python - Webots 机器人在尝试与外部 Kinect 一起使用时不说话

Python比较2个大小列表增加的Pythonic方法是什么?

python - 为多个时间步长值生成多个图

python - sympy: 'Transpose' 对象没有属性 tolist

Python 最佳实践 - 我应该用值初始化变量吗?

python - python中 "is"和 "isinstance"的区别

python - python中的简单列表递归

python - 如何使用nltk从字符串中提取名称

Python "if modified since"检测?

c++ - 从 eclipse 中运行的 python 代码在 visual studio 中调试 C++ 代码