如何遍历两个列表

时间:2014-12-26 03:54:49

标签: python list comparison

这将应用于递归树函数,但我想我可以用两个基本列表来看它:

a = [1,2,3]
b = [1,2,3]

我想使用迭代或递归来简单地遍历'a'和'b'中的每个项目,并确保所有项目具有相同的值。

我试过了:

for i in a:
    for g in b:
        if i == g:
           return True

但这显然不起作用。我的任务是比较两棵树,以确保所有子树具有相同的值,并且同样位于相同的位置。

3 个答案:

答案 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