我想检查嵌套列表中是否存在某个数字
Slist = [[[10, 20], [30, 40]], [[50, 60], [70, 80]]]
def ASearch(t, L):
if t==L:
return True
else:
return ASearch(t, L[0]) or ASearch(t, L[1])
ASearch(15,Slist)
有什么问题?
更新
OP意味着发布:
Slist = [[[10, 20], [30, 40]], [[50, 60], [70, 80]]]
def ASearch(t, L):
if t==L:
return True
return ASearch(t, L[0]) or ASearch(t, L[1])
print(ASearch(15, Slist))
print(ASearch(50, Slist))
预期产出:
False
True
实际输出:
TypeError: 'int' object is not subscriptable
答案 0 :(得分:2)
您的代码中的少数问题之一是它只能返回True
。
你想要的可能就是:
def ASearch(t, L):
if type(L) == list:
return any(ASearch(t, l) for l in L)
else:
return t == L
答案 1 :(得分:0)
另一种方法是单独展平列表,然后检查该元素是否包含在展平列表中:
{
"operation": {
"type": "string",
"enum": ["create","update"]
},
"payload": {
// I have to add json file refs: based on the value of operation(create,update)
}
}
现在,您可以使用元素和列表调用def flatten(L):
flat = []
if isinstance(L, list):
for item in L:
flat += flatten(item)
else:
flat.append(L)
return flat
def ASearch(t, L):
return t in flatten(L)
函数:ASearch
。
或者,您现在可以使ASearch(50, nested_list)
成为lambda函数:
ASearch