Python学习之Part06.集合

本文介绍了Python集合的定义、特性以及常用的集合方法,包括添加元素、删除元素、交集、并集、差集等,并提供了用集合进行列表去重和排序的实战示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值