python列表set函数用法_(转)Python中集合(set)的基本操作以及一些常见的用法

原文:http://blog.51cto.com/10616534/1944841

Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等)

1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合

#!/usr/bin/env python

# -*-coding:UTF-8 -*-

#创建一个数值集合

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

#创建一个字符集合 注意:从输出结果中我们会看到l只出现了一次

set2 = set("HelloWorld!")

print('set1 %s' % set1)

print('set2 %s' % set2)

'''运行结果

set1 {1, 2, 3, 4}

set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}

'''

2)去重,即可能在一些特殊的场景需要用到,实现去除掉列表中的重复元素

#!/usr/bin/env python

# -*-coding:UTF-8 -*-

#列表去重比较简单

list1 = [3,3,3,4,5,3]

set1 = set(list1)

print("list1去重后的set集合:",set1)

#将如中后的集合在转化成一个新列表

new_list = [i for i in set1]

print("list1去重后的list列表:",new_list)

'''运行结果

list1去重后的set集合: {3, 4, 5}

list1去重后的list列表: [3, 4, 5]

'''

3)关系测试,即一些集合的最基本操作,如集合取交集、取并集、取差集、判断一个集合是不是另一个集合的子集或者父集等。

#!/usr/bin/env python

# -*-coding:UTF-8 -*-

set1 = set([1,2,3,4,5])

set2 = set([3,4,5,6,7])

#取交集

set3 = set1.intersection(set2)

# set3 = set1 & ste2 #取交集,与intersection()效果相同

print("set1和set2的交集为:",set3)

#取并集

set4 = set1.union(set2)

#set4 = set1 | set2 #取并集,与union()效果相同

print("set1和set2的交集为:",set4)

#取差集 这个地方要稍稍注意一下,防止进坑

set5 = set1.difference(set2)

#set5 = set1 - set2 #取差集 ,与difference()效果相同

print("set1与set2的差集为:",set5)

set6 = set2.difference(set1)

print("set2与set1的差集为:",set6)

#对称差集 -----即去掉两个集合的共同的部分

set7 = set1.symmetric_difference(set2)

#set7 = set1 ^ set2 #对称差集, 与symmetric_difference()效果相同

print("去掉两个集合的共同的部分:",set7)

#判断是否是set1是否是set2的子集

flag1 = set1.issubset(set2)

print("print(判断是否是set1是否是set2的子集):",flag1)

#判断是否是set1是否是set2的父集

flag2 = set1.issuperset(set2)

print("判断是否是set1是否是set2的父集:",flag2)

'''运行结果如下:

set1和set2的交集为: {3, 4, 5}

set1和set2的交集为: {1, 2, 3, 4, 5, 6, 7}

set1与set2的差集为: {1, 2}

set2与set1的差集为: {6, 7}

去掉两个集合的共同的部分: {1, 2, 6, 7}

print(判断是否是set1是否是set2的子集): False

判断是否是set1是否是set2的父集: False

'''

4)集合的一些其它基本操作

#!/usr/bin/env python

# -*-coding:UTF-8 -*-

#输出集合中的元素

#注意集合与列表和元组不同,集合是无序的,所以无法通过数字进行索引获取某一个元素的值

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

for i in set1:

print (i)

#向集合中添加一个元素

set1.add(5)

print("向集合中添加一个元素5后:",set1)

#删除一个元素

set1.remove(1)

print("从集合中删除元素1后:",set1)

#计算集合的长度

l = len(set1)

print("集合的长度为:",l)

#判断某个元素是否在集合内

flag1 = 2 in set1

print("判断元素2是否在集合内:",flag1)

#断某个元素是否不在集合内

flag2 = 3 not in set1

print("判断元素3是否不在集合内:",flag2)

#对集合进行一次浅复制

set2 = set1.copy()

print("对集合进行一次浅复制:",set2)

'''运行结果如下:

1

2

3

4

向集合中添加一个元素5后: {1, 2, 3, 4, 5}

从集合中删除元素1后: {2, 3, 4, 5}

集合的长度为: 4

判断元素2是否在集合内: True

判断元素3是否不在集合内: False

对集合进行一次浅复制: {2, 3, 4, 5}

'''

以上是集合(set)的一些比较常用操作的示例,对于集合的一些其它操作,这里就不在一一举例说明了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值