集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。

以下是集合最重要的两点:

  去重,把一个列表变成集合,就自动去重了。

  关系测试,测试两组数据之前的交集、差集、并集等关系。

创建集合

set1 = set([1,2,3])
print(set1)
set2 = {1,2,3,[2,3],{'name':'alex'}} #错的
print(set2)

set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('tim')
print(set1) {'barry', 'tim', 'egon', 'alex', 'ritian', 'wusir'}
set1.update('abc')
print(set1) {'c', 'b', 'a', 'wusir', 'ritian', 'alex', 'egon', 'barry'}

set1.pop()    #随机删除,有返回值
print(set1) {'wusir', 'ritian', 'alex', 'barry'}
set1.remove('alex')   #按元素删除
print(set1) {'ritian', 'barry', 'wusir', 'egon'}
set1.clear()   #清空列表
print(set1) set()
del set1   #删除整个集合
print(set1) print(set1)
NameError: name 'set1' is not defined

循环

for i in set1:
print(i) wusir
alex
egon
ritian
barry

求交集

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2) # {4, 5}
print(set1.intersection(set2)) # {4, 5} {4, 5}
{4, 5}

并集

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8}
print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7,8} {1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
#反交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8} {1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
#差集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) # {1, 2, 3} set1独有的
print(set2 - set1) # {6, 7, 8} set2独有的
print(set1.difference(set2)) # {1, 2, 3} {1, 2, 3}
{8, 6, 7}
{1, 2, 3}
子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6} print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。 True
True
True
True

列表和集合转换和去重

li = {1,23,44,44,1,4,5,6,6}
set1 = set(li)
print(set1)
li = list(set1)
print(li) {1, 4, 5, 6, 23, 44}
[1, 4, 5, 6, 23, 44]

集合变成不可变类型

s = frozenset('barry')  #frozenset不可变集合,让集合变成不可变类型
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

循环

s = frozenset('barry')
for i in s:
print(i) a
y
b
r

最新文章

  1. 关于在Xcode控制台打印的注意点
  2. Python学习路程CMDB
  3. sae flask 微信公众平台开发
  4. iOS 适配iOS9
  5. (六)ICMP、ping
  6. Topcoder SRM583 DIV 2 250
  7. 使用VSTS/TFS搭建iOS持续集成环境
  8. win7安装apache或者php 5.7缺少vcruntime140.dll的问题
  9. 详细说明svn分支与合并---命令行
  10. Nuget控制台 - 给你的快速添加缺少的包
  11. git学习 #2:git基本操作
  12. R语言做文本挖掘 Part5情感分析
  13. 《初识PE》导入表
  14. 使用CodeDOM动态编译一个字符串表达式
  15. C# 将对应的xml文档赋值给指定模型(对象)
  16. Android深入源代码分析理解Aidl总体调用流程(雷惊风)
  17. 在android 上 使用 rxjava 入门篇
  18. [Android] 修图工具Draw9patch使用小结(附ubuntu快捷截图方法)
  19. Python编译exe
  20. 2017ACM-ICPC沈阳区域赛

热门文章

  1. Codeforces 1139E(二分图最大匹配)
  2. Codeforces 526G Spiders Evil Plan
  3. Serega and Fun Codeforces - 455D || queue
  4. PHP面向对象static关键字
  5. IIS7文件无法下载问题处理
  6. 部署ASP.Net Core 2.1 項目到 IIS
  7. ASP.Net MVC 控制@Html.DisplayFor日期显示格式
  8. Java GUI 事件监听
  9. hihocoder1080 更为复杂的买卖房屋姿势
  10. 兼容IE的滚动条自定义样式