pythonset操作教程_set-python编程入门系列图文教程-PHP中文网教程

python 的 set 和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素。set 和 dict 类似,但是 set 不存储 value 值的。

1、set 的创建

创建一个 set,需要提供一个 list 作为输入集合set1=set([123,456,789])

print(set1)

输出结果:{456, 123, 789}

传入的参数 [123,456,789] 是一个 list,而显示的 {456, 123, 789} 只是告诉你这个 set 内部有 456, 123, 789 这 3 个元素,显示的顺序跟你参数中的 list 里的元素的顺序是不一致的,这也说明了 set 是无序的。

还有一点,我们观察到输出的结果是在大括号中的,经过之前的学习,可以知道,tuple (元组) 使用小括号,list (列表) 使用方括号, dict (字典) 使用的是大括号,dict 也是无序的,只不过 dict 保存的是 key-value 键值对值,而 set 可以理解为只保存 key 值。

回忆一下,在 dict (字典) 中创建时,有重复的 key ,会被后面的 key-value 值覆盖的,而 重复元素在 set 中自动被过滤的。set1=set([123,456,789,123,123])

print(set1)

输出的结果:{456, 123, 789}

2、set 添加元素

通过 add(key) 方法可以添加元素到 set 中,可以重复添加,但不会有效果set1=set([123,456,789])

print(set1)

set1.add(100)

print(set1)

set1.add(100)

print(set1)

输出结果:{456, 123, 789}

{456, 123, 100, 789}

{456, 123, 100, 789}

3、set 删除元素

通过 remove(key) 方法可以删除 set 中的元素set1=set([123,456,789])

print(set1)

set1.remove(456)

print(set1)

输出的结果:{456, 123, 789}

{123, 789}

4、set 的运用

因为 set 是一个无序不重复元素集,因此,两个 set 可以做数学意义上的 union(并集), intersection(交集), difference(差集) 等操作。

例子:set1=set('hello')

set2=set(['p','y','y','h','o','n'])

print(set1)

print(set2)

# 交集 (求两个 set 集合中相同的元素)

set3=set1 & set2

print('\n交集 set3:')

print(set3)

# 并集 (合并两个 set 集合的元素并去除重复的值)

set4=set1 | set2

print('\n并集 set4:')

print(set4)

# 差集

set5=set1 - set2

set6=set2 - set1

print('\n差集 set5:')

print(set5)

print('\n差集 set6:')

print( set6)

# 去除海量列表里重复元素,用 hash 来解决也行,只不过感觉在性能上不是很高,用 set 解决还是很不错的

list1 = [111,222,333,444,111,222,333,444,555,666]

set7=set(list1)

print('\n去除列表里重复元素 set7:')

print(set7)

运行的结果:{'h', 'l', 'e', 'o'}

{'h', 'n', 'o', 'y', 'p'}

交集 set3:

{'h', 'o'}

并集 set4:

{'h', 'p', 'n', 'e', 'o', 'y', 'l'}

差集 set5:

{'l', 'e'}

差集 set6:

{'p', 'y', 'n'}

去除列表里重复元素 set7:

{555, 333, 111, 666, 444, 222}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值