- 这个列表有两个元素,一个包含其他元组的元组和一个整数元组。
- 如果你想检查嵌套结构,你需要自己去做。
- 如果嵌套可以任意深,那么递归解决方案(此方案假设嵌套容器只能是元组或列表)将是一种选择:
>>> a = [((1,1),(0,0)), (3,4)]
>>> def is_in(x, nested):
... result = False
... if not isinstance(nested, (tuple, list)):
... return result
... for item in nested:
... if x == item:
... result = True
... else:
... result = result or is_in(x, item)
... if result:
... return True
... return result
...
>>> is_in((1,1), a)
True
>>> is_in((0,0), a)
True
>>> is_in((3,4), a)
True
>>> is_in((8, 8), a)
False
>
应该在找到第一个匹配项后停止遍历。
请注意,如果递归不是你的强项,你可以用自己的栈替换调用栈!
def is_in_iterative(x, nested):
stack = [nested]
while stack:
item = stack.pop()
print(item)
if item == x:
return True
elif isinstance(item, (list, tuple)):
stack.extend(item)
return False
然而,请注意这将按
相反的顺序检查...