Python 列表之间的对称差

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Python 中,两个集合的对称差是指那些属于其中一个集合,但不属于它们交集的元素组成的集合。在这个挑战中,你将编写一个函数,该函数接受两个列表作为输入,并返回它们的对称差。

对称差

编写一个函数 symmetric_difference(a, b),它接受两个列表作为参数,并将它们的对称差作为列表返回。该函数不应过滤掉重复值。

要解决此问题,你可以按以下步骤操作:

  1. 从每个列表创建一个集合。
  2. 对它们中的每一个使用列表推导式,只保留不在另一个先前创建的集合中的值。
  3. 连接步骤 2 中获得的两个列表。
def symmetric_difference(a, b):
  (_a, _b) = (set(a), set(b))
  return [item for item in a if item not in _b] + [item for item in b
          if item not in _a]
symmetric_difference([1, 2, 3], [1, 2, 4]) ## [3, 4]

总结

在这个挑战中,你已经学会了如何在 Python 中找到两个列表之间的对称差。你还学会了如何使用集合和列表推导式来解决这个问题。