这将应用于递归树函数,但我想我可以用两个基本列表来看它:
a = [1,2,3]
b = [1,2,3]
我想使用迭代或递归来简单地遍历'a'和'b'中的每个项目,并确保所有项目具有相同的值。
我试过了:
for i in a:
for g in b:
if i == g:
return True
但这显然不起作用。我的任务是比较两棵树,以确保所有子树具有相同的值,并且同样位于相同的位置。
答案 0 :(得分:3)
all(x == y for x, y in itertools.izip_longest(a, b, fillvalue=object()))
应该最好地确保您想要的结果。 fillvalue
设置为新的object()
, sentinel 保证不会与其他任何内容进行比较 - 而izip_longest
pad 具有该标记的两个序列中最短的序列,从而保证在比较不同长度的序列时没有“假阳性”。
答案 1 :(得分:2)
简单来说,列表本身可以相同或不相同:
In[2]: a = [1,2,3]
In[3]: b = [1,2,3]
In[4]: a==b
Out[4]: True
In[5]: c = [2,1,3]
In[6]: a==c
Out[7]: False
假设你只使用a和b相同大小的树,你必须按索引经过两棵树:
all_equal = True
for i in range(len(a)):
if a[i]!=b[i]:
all_equal = False
break
答案 2 :(得分:1)
>>> all(x == y for (x, y) in itertools.izip(a, b))
True