弄清楚如何使用集合和列表

时间:2013-10-02 22:10:18

标签: python list set subset intersection

我正在使用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]

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

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分:1)

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

子集:

>>> 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]