成员检测能够检查某个特定的元素是否被包含在一个序列中,例如字符串、列表、元组或集合。在 Python 中使用集合的一个主要的优点是,它们在 Python 中为成员检测做了深度的优化。例如,对集合做成员检测比对列表做成员检测高效地多。如果你是计算机科班出身,我们可以说,这是因为集合中成员检测的平均时间复杂度是 O(1)的而列表中则是 O(n)。
下面的代码展示了使用列表做成员检测的过程:
# Initialize a list possibleList = ['Python', 'R', 'SQL', 'Git', 'Tableau', 'SAS', 'Java', 'Spark', 'Scala'] # Membership test 'Python' in possibleList
集合中也可以做类似的操作,只不过集合更加高效。
# Initialize a set
possibleSet = {'Python', 'R', 'SQL', 'Git', 'Tableau', 'SAS', 'Java', 'Spark', 'Scala'}
# Membership test
'Python' in possibleSet由于「possibleSet」是一个集合,而且「Python」是集合「possibleSet」中的一个元素,这可以被表示为「Python' ∈ possibleSet」如果你有一个不属于集合的值,比如「Fortran」,这可以被表示为「Fortran' ∉ possibleSet」。
拓展:集合的去重
list1 = [11, 22, 33, 11, 22, 11, 44, 11] print(set(list1))
固定集合
不可变的容器,无序,元素唯一
创建固定集合- 使用构造函数(frozenset)
fs = frozenset() fs_num = frozenset([1, 2, 3, 4])