集合的两个功能:

  • 集合可以实现去重的功能;
  • 集合可以实现关系测试; 交集, 差集,并集, 是否子集, 是否没有交集……..

前菜

现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。现在需要你用程序来判断IP是否合法。

  • 输入描述:输入一个ip地址
  • 输出描述:返回判断的结果YES or NO

示例1

  • 输入: 10.138.15.1
  • 输出: YES
  4 ip = raw_input("ip:")5 if len(ip.split(".")) != 4:6     print "NO"7 else:8     for i in ip.split("."):9         if not 0<=int(i)<=255:10             print "NO"11             exit()12     print "YES"

集合set的定义{}

  • 集合是不重复的数据结构;
# 如果花括号里面为空,则是字典类型;
s = {}
print type(s)
<type 'dict'>
# 定义集合的第一种方式 ;
s = {1, 2, 3, 2, 3}
print type(s)
<type 'set'>

工厂方法定义集合时, 括号里面是可迭代的对象, eg: 数值类型不可以;

# 定义集合的第二种方式 ; 定义一个空的集合;
s = set()
print type(s)
<type 'set'>s = set('hello')
print s
{'e', 'h', 'l', 'o'}s = set((1,2,3,4,5))
print s
{1, 2, 3, 4, 5}s = set({'a':1,'b':2})
print s
{'a', 'b'}s = set([1,2,3])
print s
{1, 2, 3}

应用: 如何实现列表去重?

- 转换为集合数据类型; set(列表)
- 字典的fromkeys方法实现;

# 实现列表去重 1 :
li = [1, 2, 3, 4, 1, 2]
s = set(li)           #转换为集合数据类型
print s
{1, 2, 3, 4}# 实现列表去重 2 :
li = [1, 2, 3, 4, 1, 2]
d = {}.fromkeys(li)   #字典的fromkeys方法
print d.keys()
[1, 2, 3, 4]

集合的特性

- 集合是无序的, 不重复的数据类型;
- 因此不支持索引,也不支持切片;也不支持重复;也不支持连接;
- 支持成员操作符; 支持for循环;

s = {1, 2, 3, 4, 1, 2}
print 1 in s
True
print 2 not in s
False# 集合支持 for 循环,是可迭代的;
s = {1, 2, 3, 4}
for i in s:print i
1
2
3
4

集合的增删改查

s = {1, 2, 3, 4, 1, 2}
print s
{1, 2, 3, 4}
s.add(1)
{1, 2, 3, 4}
s.add(7)
{1, 2, 3, 4, 7}s.update(s1)
print s
{1, 2, 3, 4, 7, 'a', 'b', 'c'}
# 集合不支持重复;也不支持连接

查- (关系测试操作)

s1 = {1, 2, 3, 4}
s2 = {1, 2, 3, 5}# 交集
s1 & s2
s1.intersection(s2)
s1.intersection_update(s2)
{1, 2, 3}# 并集
s1 | s2
s1.union(s2)
{1, 2, 3, 4, 5}# 差集
s1 - s2
s1.difference(s2)
{4}# 对等差分
s1 ^ s2
s1.symmetric_difference(s2)
{4, 5}s1.issubset(s2)    ##s1是否是s2的子集
s1.issuperset(s2)  ##s1是否为s2的父集
s1.isdisjoint(s2)  ##s1是否不是s2

s = {'alice','hello', 'westos', 'b', 18, 2, 33, 4, 1, 2, 7, 6, 5}s.pop()不能带任何参数,随机删除一个元素
print s.pop()
1s.remove删除集合指定元素, 如果不存在,则报错;
s = {'alice','hello', 'westos', 'b', 18}
s.remove('alice')s.discard删除集合指定元素, 如果不存在,do nothing;
In [38]: s = {'alice','hello', 'westos', 'b', 18}
s.discard("a")s.clear清空集合元素
s.clear()
print s
set([])

应用:

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性, 他先用计算机生成了N个1到1000之间的随机整数(N≤1000), N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺 序去找同学做调查。请你协助明明完成“去重”与“排序”的工作;

提示:

- 生成随机数,
- import random
- random.randint(1,1000)
- 列表的去重

  3 import random4 s = set()5 N = input("N:")6 for i in range(N):7     num = random.randint(1,1000)8     s.add(num)9 out = list(s)10 out.sort()11 print outimport random
s = set()
N = input('输入一个数')
for i in range (N) :
s.add(random.randint(1,1000))
# sorted 是内置方法, 用来排序;
print sorted(s)
# li = list(s)
# li.sort()
# print li

总结

可变数据类型: 列表, 字典, 集合
不可变数据类型: 数值类型, 字符串, 元组

- 可变数据类型实现某个功能, 直接改变可变的数据类型;
- 不可变数据类型实现某个功能,需要将结果赋值给另外一个变量;

是否实现for循环

  • 可迭代数据类型: str, list, tuple, dict, set
  • 不可迭代数据类型:数值类型

是否支持索引,切片, 重复和连接特性

  • 有序的数据类型: str, list, tuple
  • 无序的数据类型: dict, set

集合操作 - 字典的近亲相关推荐

  1. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换

    python字典(dict)+常用方法操作+列表.元组.集合.字典的互相转换 字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 为了保存具有映射关系的数据,Python ...

  2. 二、python基础(列表、元组、字符串、集合、字典、文件操作,函数基本语法及特性)...

    本节内容 列表.元组操作 字符串.列表.字典.集合操作 文件操作 函数基本语法及特性 一.列表.元组操作 列表是我们最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作: 列表操作:切 ...

  3. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  4. 9. python 入门教程快速复习,序列,数值类型,字符串方法,列表、集合、字典方法,文件操作,解析式

    文章目录 序列 数值类型 字符串方法大军 列表,集合,字典常用的方法 python 文件操作 解析式 写在后面 序列 序列是 python 中非常重要的一个概念,一个序列包含如下特征: 序列有顺序: ...

  5. 05-Python—列表、元祖、字典、集合操作大全:建议收藏

    数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合.我们将会学习如何使用它们,以及它们如 ...

  6. 【Python】05-列表、元祖、字典、集合操作大全:建议收藏

    数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合.我们将会学习如何使用它们,以及它们如 ...

  7. Python基础入门:高效的集合操作

    Python中有两种可以遍历的容器类型. 序列类型:包含字符串.列表.元祖 映射(哈希)类型:包含字典.集合 序列类型是线性表,就像数组一样,是在内存中开辟一块连续空间,连续存储的,那么查找某个元素时 ...

  8. Python中的高效的集合操作

    Python中有两种可以遍历的容器类型. 序列类型:包含字符串.列表.元祖 映射(哈希)类型:包含字典.集合 序列类型是线性表,就像数组一样,是在内存中开辟一块连续空间,连续存储的,那么查找某个元素时 ...

  9. python-字符串·文件·集合操作

    原本这几个应该和列表·字典一起写的,只是我不是一起学的,所以就分开写了. 字符串操作: 特性:不可修改 一些基本语法: name.find('A') 查找A,找到返回其索引, 找不到返回-1 name ...

最新文章

  1. Lotus Sametime 服务器的安装和配置
  2. airpods pro是按压还是触摸_AirPods 与 AirPods Pro 哪个好?如何正确选购华强北版本...
  3. centos下rmp包离线下载
  4. matlab车辆贪心作业调度,贪心算法-区间调度-Interval Scheduling
  5. mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)
  6. java8 streams_另一个Java 8 Lamdbas和Streams示例
  7. 世界最早投入运行的计算机网络是,世界最早投入运行的计算机网络是
  8. Kapacitor安装及使用
  9. LeetCode 563. Binary Tree Tilt
  10. matlab用solve解方程错误提示,MATLAB中使用solve解决方程组的问题
  11. 下载python流程-Python编写win程序的操作流程
  12. 自定义WP日志标题长度
  13. 那个 php5 集成包,品络php5环境集成安装包_品络php5环境集成安装包官方版下载 - 服务器区 - 绿软家园...
  14. C陷阱与缺陷 个人阅读笔记
  15. 安卓开发调用python脚本_android开发调用python脚本
  16. python断言语句的语法_Python断言教程
  17. wps中将文档输出为pdf_如何将WPS文件转换为PDF格式
  18. android获取汉字拼音首字母,ios/android获取汉字拼音首字母
  19. Fluent验证案例05:管道中的泊肃叶流动
  20. 感人小说 - 再见了,可鲁

热门文章

  1. 微服务应用故障定位系统实现原理剖析
  2. 导波系统传输TM波和TE波的条件
  3. arduino nano 的引脚输出脉冲,到底有多快?蚂蚁指挥大象,脉冲控制伺服电机走位的测试。
  4. 如何使用 PyTorch 进行半精度训练
  5. java record用法_Java14不得不知的5个新功能
  6. 巴比特 | 元宇宙每日必读:“元宇宙”炒热了XR赛道,高通试图“赢家通吃”,芯片巨头们的诸神之战开启...
  7. debian安装dde桌面
  8. 《开源合辑-互联网-社交网络(SNS)》
  9. 中国计算机技术职业资格网
  10. 移动硬盘已连接USB我的电脑不显示的全网最细汇总多种解决方法(保姆级图文详细步骤)