1.集合的定义
定义一个空集合:
>>> s = set()
>>> type(s)
<class 'set'>
>>> s1 = set([])
>>> type(s1)
<class 'set'>
>>> s2 = set({})
>>> type(s2)
<class 'set'>
定义一个集合并初始化:集合中的元素不能重复
>>> s = {1, 2, 3, 2, 5, 6, 1}
>>> print(s, type(s))
{1, 2, 3, 5, 6} <class 'set'>
列表的快速去重:
>>> li = [1, 2, 'hello', 2, 3, 'hello']
>>> s = set(li)
>>> print(s, type(s))
{1, 2, 3, 'hello'} <class 'set'>
2.集合的特性:集合不支持索引和切片
>>> s = {1, 2, 'hello'}
成员操作符
>>> print('hello' in s)
True
>>> print(1 in s)
True
>>> print(0 in s)
False
for 循环
>>> for i in s:
... print(i)
...
1
2
hello
3.集合的常用方法
1.添加单个元素: add()
集合是一个可变的数据类型(数据发生改变后,变量的内存地址发生了改变)
其中添加顺序和存储顺序不相同
>>> s.add(0)
>>> s.add(10)
>>> s
{0, 1, 2, 3, 10}
2.添加多个元素: update()
>>> s.update({5, 6, 7})
>>> s
{0, 1, 2, 3, 5, 6, 7, 10}
3.删除: pop()删除并返回集合中的第一个元素
>>> tmp = s.pop()
>>> tmp
0
>>> s
{1, 2, 3, 5, 6, 7, 10}
4.删除指定的元素: remove()删除集合中指定的元素但不返回此元素
>>> a = s.remove(3)
>>> a
>>> s
{1, 2, 5, 6, 7, 10}
5.排序: sorted()根据ASC码由大到小进行排序,返回一个新列表
>>> s1 = {'a', 'A', 'b', 'http'}
>>> sorted(s1)
['A', 'a', 'b', 'http']
>>> s2 = {3, 9, 7, 7, 6, 2}
>>> sorted(s2)
[2, 3, 6, 7, 9]
>>> s
{1, 2, 5, 6, 7, 10}
>>> s2
{2, 3, 6, 7, 9}
6.交集: intersection()返回两个集合交集的新集合
>>> s.intersection(s2)
{2, 6, 7}
7.并集: union()返回两个集合并集的新集合
>>> s.union(s2)
{1, 2, 3, 5, 6, 7, 9, 10}
8.差集: difference()返回两个集合差集的新集合
s中有但是s2中没有的元素
>>> s.difference(s2)
{1, 10, 5}
9.对等差分: 并集-交集
>>> s.symmetric_difference(s2)
{1, 3, 5, 9, 10}
10.子集: issubset()判断是否是子集,返回true 或 false
>>> s3 = {1, 2}
>>> s3.issubset(s)
True
>>> s3.issubset(s2)
False
11.是否不相交: isdisjoint() 判断两个集合是不是不相交
>>> s3 = {8}
>>> s3.isdisjoint(s)
True
练习:
根据输入的N确定N个在(1, 100)范围内的随机数,去重并排序
import random
N = int(input('Please input N:'))
nums = []
for i in range(N):
nums.append(random.randint(1, 101))
nums_nore = set(nums)
nums_sort = sorted(nums_nore)
print(nums_sort)
print('最终剩余%d个数.' %len(nums_sort))
运行结果: