Python 如何测试整数是否在列表的子列表中

Python 如何测试整数是否在列表的子列表中,python,Python,我想测试3是否是元素的第一个数字(整数或子列表的第一个),如下所示: lst=[2, [3,6], [4,1,7]] 3 in lst 结果应该是真的,因为3是[3,6]的第一个元素 顺便说一句:我的数据集不会使我的列表像[3、[3,7]](单独和在子列表中)您可以迭代列表,检查子元素sub是列表还是整数,并返回您想要的结果: L = [2, [3,6], [4,1,7]] num = 2 res = False for sub in L: if isinstance(sub, lis

我想测试3是否是元素的第一个数字(整数或子列表的第一个),如下所示:

lst=[2, [3,6], [4,1,7]]
3 in lst
结果应该是真的,因为3是[3,6]的第一个元素


顺便说一句:我的数据集不会使我的列表像[3、[3,7]](单独和在子列表中)

您可以迭代列表,检查子元素
sub
是列表还是整数,并返回您想要的结果:

L = [2, [3,6], [4,1,7]]
num = 2
res = False
for sub in L:
    if isinstance(sub, list):
        if num in sub:
            res = True
            break
    else:
        if num == sub:
            res = True

print(res)

您可以使用非常简单的递归函数来实现这一点,如:

l =[2, [3,6], [4,1,7]]

def inList(l, n):
    if isinstance(l, list):
        return l[0] == n or any(inList(member, n) for member in l[1:])
    else:
        return False

inList(l, 3) # True
inList(l, 9) # False
inList(l, 2) # True
这还具有深入挖掘嵌套列表的优势:

l =[2, [3,6], [4,1,[9,[5]], 7]]
inList(l, 5) # True

假设没有子列表:

l=[2, [3,6], [4,1,7]]
first_elements = [i[0] if isinstance(i, list) else i for i in l]  # [2, 3, 4]
print(3 in first_elements)
输出:


True

你应该展示你自己的尝试。你尝试了什么,在哪里失败了?另外,不要像内置类型那样调用变量(
list
dict
tuple
,…)。同样相关的还有:你问过如何让它工作吗,或者哦,我想那会工作吗?前面的结果出现在前面的注释中,而后面的结果表明您实际上不理解运算符中的
的功能。您的数据是否有子列表?OP只希望在n与任何列表的第一个元素匹配时返回
True
,而不是任何元素感谢@Dan,我什么时候才能知道阅读理解在喝咖啡之前就被打破了。这很好,但是像
l=[2,3,6],[4,1,7],5]
这样的列表会有问题
print(5个在第一个元素中)
=>True。@MarkMeyer通过阅读问题,我想说
l=[2,3,6],[4,1,7],5]
仍然应该返回True,尽管还不清楚