python2_集合

集合


1.定义:

集合是不重复的数据类型

#遍历数组
#!/usr/bin/env python
# -*- coding: utf-8 -*-

s = {1,2,3,4,2,2,3,1,1}
for i in s :
    print i

这里写图片描述

定义同元组列表一样,集合元素的数据类型不同,不能存在列表,字典
但可以存在元组!!

s = {1,'hello','1L','1+3j',{a+1,b=2}}
for i in s :
    print i

这里写图片描述

s = {1,'hello','1L','1+3j',[1,2,3]}
for i in s :
    print i

这里写图片描述

s = {1,'hello','1L','1+3j',(1,2,3)}
for i in s :
    print i

这里写图片描述

查看类型:

# s = set {} # 定义一个空集合
s = {1,2,4,5,2,3}
print type(s)

这里写图片描述

2.特性:

1.集合是无序的数据类型,
因此不会有索引, 切片, 重复,连接这些特性,但支持成员操作符

s = {1, 2, 4, 2, 1, 2, 5, 5, 22}
print s
s.add(80)
print s

这里写图片描述

2.集合是可迭代的对象,
因此支持for循环遍历元素;

s = {91,2,3,15,78}
print s
for i in s:
    print i,        ##加逗号输出不换行

执行结果:

set([91, 2, 3, 78, 15])
91 2 3 78 15        ##遍历无序

3.集合的基本操作—增加集合元素

3-1增加集合元素*.add()

其中括号内可以是元组,字符串,基本数据类型,但不能是列表和字典

# !/usr/bin/env python
# -*- coding: utf-8 -*-

s = set()  # 建立一个空集合
s.add('a')
print s
s.add(2)
print s
s.add((1, 2, 3))
print s

执行结果:

set(['a'])
set(['a', 2])
set(['a', 2, (1, 2, 3)])

3-2修改集合元素*.update()

其中括号内可以是元组,字符串,列表,但不能是字典和基本数据类型

s = set()
s.update((1,2,3))
print s

s.update('hello')
print s

s.update([3,2,5])
print s

s.update(['a','b','c'])
print s

这里写图片描述

3-3删除集合元素*remove()

括号内元素及其类型载集合中要存在,否则报错KeyError:

s = {1,2,3,(5,6,7)}
s.remove(2)
print s
s.remove(8)
print s

执行结果:
set([3, 1, (5, 6, 7)]) ##第一步运行正常
Traceback (most recent call last):
File “/home/kiosk/Documents/pythoncodes/JD_exercise/1练习题/11_集合2.py”, line 36, in
s.remove(8) ##第二部运行报错
KeyError: 8

3-4*.pop()

随机 删除集合中元素,括号内不跟参数,否则报错TypeError:

s = {1,2,3,(5,6,7)}
s.pop()
print s

执行结果:

set([1, 2, (5, 6, 7)])      ##删除了元素3

3-5*.discard()

括号内跟集合元素,删除集合中指定元素,不加元素报错TypeError,所跟元素集合中不存在,则不操作,不报错

s = {1,2,3,(5,6,7)}
s.discard(2)
print s
s.discard((5,6,7))
print s
s.discard(8)
print s
s.discard()
print s

执行结果:

set([3, 1, (5, 6, 7)])
set([3, 1])
set([3, 1])          ##前三步没问题
Traceback (most recent call last):
  File "/home/kiosk/Documents/pythoncodes/JD_exercise/1练习题/11_集合2.py", line 51, in <module>
    s.discard()
TypeError: discard() takes exactly one argument (0 given)

3-6*.copy()

括号不跟参数,用于集合的复制

s1 = {1,2,3}
s2=s1.copy()
print s2

这里写图片描述

4.集合的交并补差

方法一:

        &    求两集合交集
        |    求两集合补集  
        -    求两集合差题   其中-号取前集合元素
        ^    对等差分  

案例:

s1 = {1,2,3}
s2 = {2,3,4}
print s1 & s2
print s1 | s2
print s1 - s2       # 其中-号取前集合元素
print s1 ^ s2       # 差集

执行结果

set([1, 3])
set([1, 2, 3, 4])
set([2])
set([2, 4])

方法二:

s1.issubset(s2)    ##判断s1是否是s2的子集,返回值布尔型
s1.issuperset(s2)  ##判断s1是否是s2的真子集,返回值布尔型                        
s1.difference(s2)  ##求s1和s2的集合的不同                       
s1.intersection    ##求s1和s2的交集 
s1.union           ##求s1和s2的并集 
s1.isdisjoint      ##自己看说明 

案例:

s1 = {1,2,3}
s2 = {2,3,4}
print s1.intersection(s2)
print s1.union(s2)
print s1.difference(s2)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值