当前位置: 移动技术网 > IT编程>脚本编程>Python > Python学习之集合(set)的功能、定义和实例讲解

Python学习之集合(set)的功能、定义和实例讲解

2018年01月28日  | 移动技术网IT编程  | 我要评论

夕纪16,中国男篮vs美国男篮热身赛,原始风

集合(set)-字典的近亲

集合的两大功能:

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

集合(set)的定义

集合是不重复的数据结构 如果花括号里面为空,则是字典类型

s = { }
print type(s)
#

定义集合的第一种方式

s = {1,2,3,4}
print type(s)
#

定义集合的第二种方式

s = set()
print type(s)
#

s = set([1,2,3,1,2,3])
print s
#set([1, 2, 3])

s = set("hello")
print s
#set(['h', 'e', 'l', 'o'])

s = set((1,2,3,4,5))
print s
#set([1, 2, 3, 4, 5])

s = set({'a':1, 'b':2, 'c':3})
#set(['a', 'c', 'b'])

集合的特性

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

#支持成员操作符
s = {1, 2, 3, 4, 1, 2}
print 1 in s
#True
print 2 not in s
#False
#集合支持for循环,是可迭代的
s = {1,2,3,2,1,5,6}
for i in s :
    print i ,
#1 2 3 5 6

集合的增删改查

增加

s = {1,2,3,4,1,2,3}
print s
#set([1, 2, 3, 4])

s.add(1) 
#set([1, 2, 3, 4])

s.add(7)
print s
#set([1, 2, 3, 4, 7])
s = {1,2,3,2,1,5,6}
s1 = {'a', 'b', 'c'}
s.update(s1)
print s
#set(['a', 1, 2, 3, 5, 6, 'c', 'b'])

查找(关系测试操作)

数学关系

s1 = {1, 2, 3, 4}
s2 = {1, 2, 3, 5}

# 交集
print s1 & s2
#set([1, 2, 3])

# 并集
print s1 | s2
#set([1, 2, 3, 4, 5])

# 差集
print s1 - s2
#set([4])
print s2 - s1
#set([5])

# 对等差分
print s1 ^ s2
#set([4, 5])

集合方法

s1 = {1, 2, 3, 4}
s2 = {1, 2, 3, 5}

# 交集
print s1.intersection(s2)
#set([1, 2, 3])


# 并集
print s1.union(s2)
#set([1, 2, 3, 5])

# 差集
print s1.difference(s2)
#set([4])
print s2.difference(s1)
#set([5])

# 对等差分
print s1.symmetric_difference(s2)
#set([4, 5])

#补充update
s1 = {1, 2, 3, 4}
s2 = {1, 2, 3, 5}
print s1.intersection_update(s2)
#set([1, 2, 3])

删除

pop( ) 随机删除
s = {'a','hello', 'redhat', 'b', 18, 33, 4, 1, 2, 7, 6, 5}
print s
#set(['a', 1, 2, 'b', 4, 5, 6, 7, 18, 'redhat', 33, 'hello'])
print s.pop()
#a

remove( ) 删除集合指定元素, 如果不存在,则报错

s = {'alice','hello', 'westos', 'b', 18}
s.remove('alice')
print s
#set([18, 'b', 'westos', 'hello'])
discard( ) 删除集合指定元素, 如果不存在,则do nothing
s = {'alice','hello', 'westos', 'b', 18}
s.discard("a")
print s
#set([18, 'b', 'westos', 'alice', 'hello'])
clear( ) 清空集合元素
s = {'alice','hello', 'westos', 'b', 18}
s.clear()
print s
#set([])

应用:

(华为机试题)题目描述

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

查。请你协助明明完成“去重”与“排序”的工作; 提示:

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

代码如下:

import 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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网