python中set函数_Python set 集合用法介绍

1. set 介绍

Python set 是一个没有重复元素的无序集合,集合里面每个元素都是唯一的,它支持并集,交集,差集等操作

2. 创建集合

2.1 用花括号字面量定义集合,集合元素用逗号分隔,即使创建集合时元素出现多次,也只会保留一个

#!/usr/bin/env python

# coding: utf-8

nums = { 1, 2, 2, 2, 3, 4 }

print(type(nums))

print(nums)

The example creates a Python set with literal notation.

nums = { 1, 2, 2, 2, 3, 4 }

执行与输出

$ ./set_literal.py

{1, 2, 3, 4}

2.2 使用 list 创建集合

#!/usr/bin/env python

# coding: utf-8

# set_from_list.py

color = ["red", "blue"]

myset = set(color)

print(myset)

执行与输出

$ ./set_from_list.py

{'red', 'blue'}

2.3 用 in 和 not in 操作符判断元素是否存在集合中

#!/usr/bin/env python

# coding: utf-8

# file: set_in.py

words = { "red", "green", "blue", "black", "white" }

word = 'green'

if word in words:

print("{0} is present in the set".format(word))

else:

print("{0} is not present in the set".format(word))

word = 'hello'

if word not in words:

print("{0} is not present in the set".format(word))

else:

print("{0} is present in the set".format(word))

执行与输出

$ ./set_in.py

green is present in the set

hello is not present in the set

2.4 用 python 内置函数访问集合

#!/usr/bin/env python

# coding: utf-8

# file: set_builtins.py

nums = { 21, 11, 42, 29, 22, 71, 18 }

print(nums)

# 获取集合长度

print("Number of elements: {0}".format(len(nums)))

# 获取集合最小值,最大值

print("Minimum: {0}".format(min(nums)))

print("Maximum: {0}".format(max(nums)))

# 计算和

print("Sum: {0}".format(sum(nums)))

print("Sorted elements:")

# 创建一个排序列表

print(sorted(nums))

执行与输出

$ ./set_builtins.py

{71, 42, 11, 18, 21, 22, 29}

Number of elements: 7

Minimum: 11

Maximum: 71

Sum: 214

Sorted elements:

[11, 18, 21, 22, 29, 42, 71]

3. 用循环迭代的方式访问集合

#!/usr/bin/env python

# coding: utf-8

# file: set_iter.py

words = { "spring", "table", "cup", "bottle", "coin" }

for word in words:

print(word)

执行与输出

$ ./set_iter.py

table

cup

coin

spring

bottle

4. 集合更新操作

集合使用 add 添加元素到当前集合, 使用 update 方法添加一个或多个集合到当前集合

#!/usr/bin/env python

# coding: utf-8

# file: set_add_update.py

words = { "spring", "table", "cup", "bottle", "coin" }

words.add("coffee")

print(words)

words2 = { "car", "purse", "wind" }

words3 = { "nice", "prime", "puppy" }

words.update(words2, words3)

print(words)

执行与输出

$ ./set_add_update.py

{'spring', 'bottle', 'cup', 'coin', 'purse', 'wind', 'nice', 'car',

'table', 'prime', 'puppy'}

5. 集合删除列表元素

有两个删除列表元素的方法: remove() 和 discard(). remove() 删除元素时,如果元素不在集合里,会抛出异常, discard() 删除元素时,如果元素不在集合里,则什么也不做

#!/usr/bin/env python

# coding: utf-8

# file: set_remove.py

words = { "red", "green", "blue", "black", "white"}

words.discard("red")

words.discard("green")

print(words)

words.remove("blue")

try:

words.remove("hello")

except KeyError as e:

pass

print(words)

执行与输出

$ ./set_remove.py

{'blue', 'black', 'white'}

{'black', 'white'}

6. 集合 pop 与 清空

pop() 删除并返回任意元素. clear() 删除集合所有元素

#!/usr/bin/env python

# coding: utf-8

# file: set_remove2.py

words = { "red", "green", "blue", "black", "white"}

print(words.pop())

print(words.pop())

print(words)

words.clear()

print(words)

输出

$ ./set_remove2.py

green

blue

{'black', 'white'}

set()

7. 集合操作方法

7.1 集合的并集,交集,差集,异或集

#!/usr/bin/env python

# coding: utf-8

# file: set_oper1.py

set1 = { 'a', 'b', 'c', 'c', 'd' }

set2 = { 'a', 'b', 'x', 'y', 'z' }

print("Set 1:", set1)

print("Set 2:", set2)

print("intersection:", set1.intersection(set2))

print("union:", set1.union(set2))

print("difference:", set1.difference(set2))

print("symmetric difference:", set1.symmetric_difference(set2))

intersection() 方法返回 set1,set2 交集(两个集合共有元素)

print("intersection:", set1.intersection(set2))

The intersection() method carries out the intersection operation, which returns elements that are both in set1 and set2.

union() 方法返回 set1,set2 并集(两个集合的所有元素)

print("union:", set1.union(set2))

difference() 返回在集合 set1,没在集合 set2 的元素

print("difference:", set1.difference(set2))

symmetric_difference() 异或函数返回两个集合的非共有元素

print("symmetric difference:", set1.symmetric_difference(set2))

输出结果

$ ./set_oper1.py

Set 1: {'c', 'b', 'a', 'd'}

Set 2: {'y', 'b', 'a', 'x', 'z'}

intersection: {'b', 'a'}

union: {'b', 'a', 'z', 'c', 'x', 'y', 'd'}

difference: {'c', 'd'}

symmetric difference: {'z', 'c', 'x', 'y', 'd'}

7.2 集合支持操作符,与 &,或 |,非 ~ ,异或 ^,如下例

#!/usr/bin/env python

# coding: utf-8

# file: set_oper2.py

set1 = { 'a', 'b', 'c', 'c', 'd' }

set2 = { 'a', 'b', 'x', 'y', 'z' }

print("Set 1:", set1)

print("Set 2:", set2)

print("intersection:", set1 & set2)

print("union:", set1 | set2)

print("difference:", set1 - set2)

print("symmetric difference:", set1 ^ set2)

8. 子集与超集的判断方法

当 set1 包含 set2 的所有元素,set1 是 set2 的超集,set2 是 set1 的子集

#!/usr/bin/env python

# coding: utf-8

# file: subset_superset.py 示例代码

set1 = { 'a', 'b', 'c', 'd', 'e' }

set2 = { 'a', 'b', 'c' }

set3 = {'x', 'y', 'z' }

if set2.issubset(set1):

print("set1 is a subset of set2")

if set1.issuperset(set2):

print("set1 is a superset of set2")

if set2.isdisjoint(set3):

print("set2 and set3 have no common elements")

判断 set2 是否是 set1 子集

if set2.issubset(set1):

print("set1 is a subset of set2")

判断 set1 是否是 set2的超集

if set1.issuperset(set2):

print("set1 is a superset of set2")

判断 set2 与 set3 没有相同元素

if set2.isdisjoint(set3):

print("set2 and set3 have no common elements")

输出

$ ./subset_superset.py

set1 is a subset of set2

set1 is a superset of set2

set2 and set3 have no common elements

9. Python 使用 frozenset() 创建不可变 set

修改不可见列表会抛出异常

>>> s = frozenset(('hello', 'world'))

>>> s

frozenset({'hello', 'world'})

>>> s.add('yes')

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'frozenset' object has no attribute 'add'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值