python,集合
************************集合***********************
总结
可变数据类型: 列表, 字典, 集合
不可变数据类型: 数值类型, 字符串, 元组
- 可变数据类型实现某个功能, 直接改变可变的数据类型;
- 不可变数据类型实现某个功能,需要将结果赋值给另外一个变量;
是否实现for循环
可迭代数据类型: str, list, tuple, dict, set
不可迭代数据类型:数值类型
是否支持索引,切片, 重复和连接特性
有序的数据类型: str, list, tuple
无序的数据类型: dict, set
集合set的定义
集合是一个无序的,不重复的数据组合。
若花括号里面是空,是字典型
In [2]: type(set)
Out[2]: dict
In [1]: set = {}
*)集合的定义
1.
In [16]: set = {1,2,3,1,2,3}
In [17]: set = {1,2,3,'hello',(1,2,3)}
In [18]: type(set)
Out[18]: set
2.工厂法
工厂法定义集合时,括号里是可迭代对象,eg:数值类型不可以;
In [7]: lh = set() 定义空列表
*)set的应用场景
集合是一个无序的,不重复的数据组合。
• 列表去重
去重法一:
-转换为集合数据类型;set(列表)
>>> list = [1,2,2,3,4,3,4,5]
>>> s = set(list)
>>> print s
set([1, 2, 3, 4, 5])
去重法二:
-字典法;
In [3]: list = [1,2,3,4,3,2,1,2]
In [4]: dict = {}.fromkeys(list)
In [5]: print dict
{1: None, 2: None, 3: None, 4: None}
*)集合的特性
-集合是无序的,不重复的数据类型
-因此不支持索引,不支持切片,不支持重复,不支持连接;
-支持成员操作符;
-支持for循环;
*)集合的增删改查
***集合的增加
In [12]: set.add(5) #add增加
In [24]: set.update([5,6]) #update增加
***集合的删除
s.remove()
删除集合中指定的元素,如果不存在,则报错
• s.pop()
随机删除集合中的某个元素,并返回删除的元素
set.discard()
删除集合指定元素,如果不存在,do nothing;
set.clear()
清空集合元素
*)集合的其他操作
显示集合set的长度
In [14]: s
Out[14]: {2, 3, 'cd', 'ef'}
In [15]: len(s)
Out[15]: 4
• s.copy()
In [6]: set = {1,2,3,'a','b'}
集合的浅拷贝
In [7]: set.copy()
Out[7]: {1, 2, 3, 'a', 'b'}
• 关系测试:如交集、差集、并集的关系测试
s1 & s2 #并集
s1.intersection(s2) #并集
s1 | s2 #交集
s1.union(s2) #交集
s1 - s2 #1与2的差集
s2 - s1 #2与1的差集
s1 ^ s2 #对等差分
In [27]: s1.issuperset(s2) #1是2的父集
In [28]: s2.issubset(s1) #2是1的子集
In [29]: s1.isdisjoint(s2)
应用:
(华为机试题)题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性, 他先用计算机生成了N个1到1000
之间的随机整数(N≤1000), N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数去
掉,不同的数对应 着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺 序去找同学做调
查。请你协助明明完成“去重”与“排序”的工作;
提示:
生成随机数,
import random
random.randint(1,1000)
列表的去重
题目描述
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
输入描述:输入一个ip地址
输出描述:返回判断的结果YES or NO
示例1
输入: 10.138.15.1
输出: YES
#!/usr/bin/env python
#coding:utf-8
ip = raw_input('输入一个ip:')
ip1 = ip.split('.')
if len(ip1)!=4:
print "NO"
else:
for i in ip1:
if not 0<=int(i)<=255:
print "NO"
break
else:
print "YES"
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341