【发布时间】:2019-11-16 16:14:16
【问题描述】:
有没有办法同时迭代两个不同长度的列表而不合并它们?
我尝试了itertools.product(list1, list2),但这与嵌套循环非常相似。所以第二个列表会针对第一个列表的每个项目进行迭代,这不是我想要的。
我想比较两个列表,看看它们是否匹配。
【问题讨论】:
-
zip_longest怎么样? -
非常感谢,看来已经成功了!
有没有办法同时迭代两个不同长度的列表而不合并它们?
我尝试了itertools.product(list1, list2),但这与嵌套循环非常相似。所以第二个列表会针对第一个列表的每个项目进行迭代,这不是我想要的。
我想比较两个列表,看看它们是否匹配。
【问题讨论】:
zip_longest 怎么样?
如果您的目的是检查差异,您可以使用sets。
假设您有两个列表,例如
a=["one", "two", "three"]
b=["one", "other"]
您可以通过将它们转换为集合来检查差异:
print(set(a) - set(b))
顺序很重要:第一项是您要检查的第二项:
print(set(a) - set(b))
返回{'three', 'two'}(第一组中存在的项目在第二组中丢失),而
print(set(b) - set(a))
返回{'other'}
【讨论】: