2

我正在使用 Python v3.3.2

我对此进行了研究,但似乎仍然没有运气,所以我想我会发布。

我有一个类文件,它创建一个空列表并从另一个文件收集值并将所述值放入列表中。它这样做了两次,因此它创建了两组数字。例如:

[1, 2, 3, 4, 5, 6, 7]
[5, 6, 7, 8, 9, 10]

一个新的数字列表被放入等式中。例如:

[1, 5, 7, 3]

我帮助确定新的一组数字是否是这两组数字的一个子集。例如:

[1, 5, 7, 3] is subset of [1, 2, 3, 4, 5, 6, 7]
[1, 5, 7, 3] is not a subset of [5, 6, 7, 8, 9, 10]

我还需要帮助确定两组的交集。例如:

[5, 6, 7] is the intersection of [1, 2, 3, 4, 5, 6, 7] and [5, 6, 7, 8, 9, 10]

我需要帮助的最后一件事是合并这两组并删除重复项。例如:

[1, 2, 3, 4, 5, 6, 7] + [5, 6, 7, 8, 9, 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

任何人都可以帮助我解决这些问题吗?

4

2 回答 2

3

您提到的所有操作都是由set内置数据结构提供的,或者可以根据其操作来实现,您只需查看链接的文档即可。例如:

s1 = set([1, 5, 7, 3])
s2 = set([1, 2, 3, 4, 5, 6, 7])

# is s1 a subset of s2?
s1.issubset(s2)
=> True

# set intersection
set([1, 2, 3, 4, 5, 6, 7]) & set([5, 6, 7, 8, 9, 10])
=> set([5, 6, 7])

# set union
set([1, 2, 3, 4, 5, 6, 7]) | set([5, 6, 7, 8, 9, 10])
=> set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
于 2013-10-02T22:12:16.170 回答
1

在 Python 中使用set 数据结构。您可以使用 自由地将列表转换为集合,set()并使用 将集合转换为列表list()。Python 中的集合几乎遵循数学集合的定义。这只是意味着集合中的所有项目在定义上都是不同的。将列表转换为集合会隐式删除所有重复项。

子集:

>>> a = [1, 5, 7, 3]
>>> b = [1, 2, 3, 4, 5, 6, 7]
>>> set(a).issubset(b)
True
>>> b = [5, 6, 7, 8, 9, 10]
>>> set(a).issubset(b)
False

路口:

>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> b = [5, 6, 7, 8, 9, 10]
>>> list(set(a).intersection(b))
[5, 6, 7]

组合这两组并删除重复项:

>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> b = [5, 6, 7, 8, 9, 10]
>>> list(set().union(a, b))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
于 2013-10-02T22:24:24.903 回答