比较列表python

时间:2011-11-18 15:28:25

标签: python

我试图在一个列表和另外3个具有相同索引数的列表之间进行比较。 例如,我有这个清单

 [A, B, C]

我用某个函数创建了另一个包含随机嵌套列表的列表 如:

 [[A ,B ,B], [C, B, A], [B, B, C]]

但我想将每个嵌套列表与原始列表进行比较,看看每个嵌套列表中的字符数与原始列表中的字符数相同 当我将原始列表中的每个索引与嵌套列表中的三个索引中的每个索引进行比较时,它都有效。我的老师说它很好,但对我来说它看起来很愚蠢,如果我有100个嵌套列表怎么办?必须有更好的方法来比较列表。 建议有人吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

from itertools import izip
def matches(input_lists, base_list):
    for l in input_lists:
        yield sum(1 for a, b in izip(l, base_list) if a==b)

结果如下:

>>> for i in matches([[1,2,3],[2,3,1],[0,2,0]], [1,2,4]):
    i


2
0
1

按预期工作。

izip() function是生成器函数,这是比zip()更好的解决方案。我们定义的matches()也是生成器函数,因此处理大型列表时应该没有问题。

有帮助吗?它足够干净吗?