对于这个可能很愚蠢的问题,我们深表歉意。但这似乎是一个我无法找到答案的难解问题。
假设我在 python 中有以下混合嵌套列表:
a = [((1,1),(0,0)), (3,4)]
我想检查以下元组 b
、c
和 d
是否出现在 a
中:
b = (1,1)
c = (0,0)
d = (3,4)
print(b in a) # <- False ?
print(c in a) # <- False ?
print(d in a) # <- True
我想替换每个打印语句中的代码,以便搜索在列表中找到元组并因此返回 True
如有任何帮助,我们将不胜感激。如果这个问题之前已经被问过,我们深表歉意。
最佳答案
我们需要一个递归函数,它接受一个列表或元组和一个要查找的元素。
每个函数都应使用 in
运算符检查元素是否在当前可迭代对象中。如果它在,则返回 True
,否则检查它是否在任何较低的维度中,方法是用每个较低的可迭代对象递归调用自身,如果其中任何一个成功则返回(这可以通过for-loop
,但我们也可以使用 any()
函数)。
所以一个类轮大致是:
def inc(it, e):
return True if e in it else any(inc(iit, e) for iit in it if type(iit) in (list, tuple))
它按预期工作:
>>> inc(a, (1,1))
True
>>> inc(a, (0,0))
True
>>> inc(a, (3,4))
True
关于Python:检查嵌套列表是否在嵌套列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935141/