我正在尝试比较具有相同索引数的一个列表和 3 个其他列表。 例如我有这个列表
[A, B, C]
我用某个函数创建了另一个带有随机嵌套列表的列表 比如:
[[A ,B ,B], [C, B, A], [B, B, C]]
但我想将每个嵌套列表与原始列表进行比较,看看每个嵌套列表中有多少字符与原始列表中的字符在同一位置 当我将原始列表中的每个索引与嵌套列表中的三个索引中的每一个进行比较时,它会起作用。我的老师说它很好,但对我来说它看起来很愚蠢,如果我有 100 个嵌套列表怎么办?必须有更好的方法来比较列表。 建议任何人?
请您参考如下方法:
你可以这样做:
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()是generator function,所以在处理大列表的时候应该问题比较少。
有帮助吗?够干净吗?
