15 个实用的 Python 集示例及程序

举报
Tiamo_T 发表于 2021/10/08 10:03:02 2021/10/08
【摘要】 集合基本上是某些无序项的集合。没有特定的存储顺序。在 Python 中,集合是相同的,但与基本集合几乎没有区别。python集合中的元素是唯一的,python集合中不能有重复项。如果输入了重复的项目,它将被忽略并且最终集合将始终包含唯一的元素。Python 集是可变的。但是,它的元素是不可变的。输入的项目不能修改。无法使用索引访问 Python 集的项目。设置项目没有附加索引。本教程在 Py...

集合基本上是某些无序项的集合。没有特定的存储顺序。在 Python 中,集合是相同的,但与基本集合几乎没有区别。

  • python集合中的元素是唯一的,python集合中不能有重复项。如果输入了重复的项目,它将被忽略并且最终集合将始终包含唯一的元素。
  • Python 集是可变的。但是,它的元素是不可变的。输入的项目不能修改。
  • 无法使用索引访问 Python 集的项目。设置项目没有附加索引。


本教程在 Python 集中解释了以下示例:

  1. 创建一个简单的集合
  2. 用构造函数创建一个集合
  3. 创建一个空集
  4. 从列表创建一个集合
  5. 从元组创建一个集合
  6. 访问集合中的特定值
  7. 将项目添加到集合 - 使用添加方法
  8. 将项目添加到集合 - 使用更新方法
  9. 从集合中删除项目 - 使用丢弃方法
  10. 从集合中删除项目 - 使用删除方法
  11. 集合上的联合操作
  12. 集合上的交运算
  13. 集合上的差分运算
  14. 两个集合的对称差
  15. 比较两个 Set
  16. 集合上的成员资格测试
  17. 在 Set 上迭代
  18. 清除集合
  19. 使用集合解决的有趣问题
  20. 集合的完整示例代码——sets.py

1. 创建一个简单的集合

Python 集合可以通过简单地将项目写入大括号中来创建。

>>> primes={3,5,7,9,11,13}

>>> type(primes)
<class 'set'>

注意:请记住,Python 字典也在声明中使用 {}。但是,在上面的示例中,我们创建了一个由 type 命令输出指示的集合。

2. 用构造函数创建一个集合

使用如下所示的 set 并将初始字符串作为构造函数传递。

在下面的例子中,我们故意在“stuff”前面添加另一个“s”,这将被集合忽略。即使我们给了不止一个,也只需要一个“s”。


>>> unique=set("thegeeksstuff");

>>> unique
{'h', 't', 'u', 's', 'f', 'e', 'g', 'k'}

>>> type(unique)
<class 'set'>

3. 创建一个空集

以下是创建空集的错误方法。这将创建一个空字典:

>>> empty={} 

>>> type(empty) 
<class 'dict'>

正确的创建方法如下所示。要创建一个空集,请使用带有空构造函数的 set 方法,如下所示。

>>> empty=set();

>>> type(empty)
<class 'set'>

在尝试创建空集时,使用构造函数方法。否则使用第一种方法将生成一个空字典。

4. 从列表创建一个集合

首先创建一个列表,如下所示:

>>> primesList=[3,5,7,11,13,17];

接下来,使用上面的列表创建一个集合:

>>> primeSet=set(primesList) 

>>> type(primeSet) 
<class 'set'> 

>>> primeSet 
{3, 5, 7, 11, 13, 17}

5. 从元组创建集合

首先,创建一个元组,如下所示。

>>> p=(3,5,7,11,13); 

>>> p 
(3, 5, 7, 11, 13) 

>>> type(p) 
<class 'tuple'>

接下来,从上面的元组创建一个集合:

>>> primes=set(p);

>>> p
(3, 5, 7, 11, 13)

>>> type(primes)
<class 'set'>

>>> primes
{3, 5, 7, 11, 13}

6. 访问集合中的特定值

不能专门访问集合元素,没有附加索引。我们无法访问 set 的元素。

>>> primes = {3, 5, 7, 11, 13}

>>> primes[1]
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
primes[1]
TypeError: 'set' object does not support indexing

7. 将项目添加到集合 - 使用添加方法

可以使用 add 和 update 两种方法将项目添加到设置中。Add 方法可以插入单个元素,而 update 方法也可以插入元组、列表。

>>> primes={3,5,7,11};

>>> primes
{11, 3, 5, 7}

>>> primes.add(19);

>>> primes
{3, 5, 7, 11, 19}

8. 将项目添加到集合 - 使用更新方法

下面将把 plist 中的项目添加到素数集。

>>> plist=[12,14,15,16];

>>> primes.update(plist);

>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}

9. 从集合中删除项目 - 使用丢弃方法

可以使用丢弃和删除方法从集合中删除项目。删除项目时,如果项目不存在,则删除报告和错误,而丢弃不存在。

>>> primes
{3, 5, 'santosh', 7, 11, 12, 14, 15, 16, 19}

>>> primes.discard("santosh")
>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}

>>> primes.discard("santosh");

在尝试移除已经移除的项目时,discard 不会报错。

10. 从集合中移除项目——使用移除方法

目前素数集具有以下值。

>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}

下面将从质数集中删除值为 11 的项目。

>>> primes.remove(11);

如下所示,我们在素数集中看不到值为 11 的项目。

>>> primes
{3, 5, 7, 12, 14, 15, 16, 19}

>>> primes.remove(11);
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
primes.remove(11);
KeyError: 11

尝试删除不存在的元素时,Remove 方法报告错误。

11.集合上的联合操作

联合操作 (|) 将创建一个新集合,其中包含来自两个集合的不同项。

>>> prime1={3,5,7,11};

>>> prime2={3,5,7,11,13,17,19}

>>> primes=prime1 | prime2

>>> primes
{3, 5, 7, 11, 13, 17, 19}

12. 集合上的交运算

交集操作 (&) 将创建一个新集合,其中包含两个集合共有的项目。

>>> prime1={3,5,7,11}; 

>>> prime2={3,5,7,11,13,17,19} 

>>> primes=prime1 & prime2 

>>> primes 
{3, 11, 5, 7}

13. 集合的差分运算

差分运算将创建一个新的集合,其中包含在第一个集合中但不在第二个集合中的元素

>>> prime2={3,5,7,11,13,17,19}

>>> prime1={3,5,7,11};

>>> primes=prime2-prime1

>>> primes
{17, 19, 13}

14. 两个集合的对称差分

两个集合的对称差将创建一个新集合,该集合包含两个集合中除公共元素之外的元素。

>>> prime2={3,5,7,11,13,17,19}

>>> prime1={3,5,7,11,91,101};

>>> primes=prime2 ^ prime1

>>> primes
{17, 19, 101, 91, 13}

15. 比较两组

使用比较我们可以检查一个集合是否是超集或子集或等于另一个集合。

>>> prime1={3,5,7,11,91,101};

>>> prime={3,5,7,11,91,101};

>>> test=prime==prime1

>>> test
True

>>> prime1={3,5,7,11,91,101};

>>> prime2={3,5,7,11,13,17,19}

>>> test=prime2<prime1

>>> test
False

>>> prime2={3,5,7,11,13,17,19}

>>> prime1={3,5,7,11,91,101};

>>> prime1={3,5,7,11};

>>> test=prime2<prime1

>>> test
False

>>> test=prime2>prime1

>>> test
True

16. 集合上的成员资格测试

我们可以测试一个元素是否存在于指定的集合中。

>>> prime1={3,5,7,11,91,101}; 

>>> test= 3 in prime1 

>>> test 
True 

>>> test=13 in prime1 

>>> test 
False

17. 在 Set 上迭代

让我们在这个例子中使用以下素数集。

>>> primes={3,5,7,11,91,101};

use for loop to loop through the set elements.
>>> for prime in primes:
print(prime);
3
5
101
7
11

18.清除集合

使用clear方法,可以删除集合中的所有项。

>>> prime1 
{3, 5, 101, 7, 11, 91} 

>>> prime1.clear() 

>>> prime1 
set()

19. 使用集合解决的有趣问题

问题陈述:给定一个整数列表,打印所有不同的元素。
使用集合我们可以在一行代码中解决这个问题。

>>> number = [1,2,3,4,5,2,3,4,7,8,9,8,12,13,14,14,19]

>>> number
[1, 2, 3, 4, 5, 2, 3, 4, 7, 8, 9, 8, 12, 13, 14, 14, 19]

>>> print (set(number))
{1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 19}

这是一个用例,类似的集合在其他场景中也很有用。

20. 集合的完整示例代码——sets.py

创建一个sets.py文件

vi sets.py

将以下内容复制/粘贴到sets.py 中并执行它以进行测试。

#1) Creating set
primes={3,5,7,9,11,13}
type(primes)

# 2) Creating set with constructor
unique=set("thegeeksstuff");
unique

# 3) Creating empty set
empty={}
type(empty)
empty=set();
type(empty)

#4) Creating set from List
primesList=[3,5,7,11,13,17];
primeSet=set(primesList)
type(primeSet)
primeSet

# 5) Creating set from tuple
p=(3,5,7,11,13);
primes=set(p);
type(primes)
primes

# 6) Accessing values in Set
Primes = {3, 5, 7, 11, 13};
#Primes[1]; # uncommenting this throw error

#7) Using Add method
primes={3,5,7,11};
primes.add(19);
primes

# 8) Using update method
plist=[12,14,15,16];
primes.update(plist);
primes

#9) Using discard
primes={3, 5, 'santosh', 7, 11, 12, 14, 15, 16, 19};
primes.discard("santosh")

# 10) Using remove
primes = {3, 5, 7, 11, 12, 14, 15, 16, 19}
primes.remove(11);
primes;

# 11) Union operation on sets
prime1={3,5,7,11};
prime2={3,5,7,11,13,17,19}
primes=prime1 | prime2
primes

# 12) Intersection operation on Sets
prime1={3,5,7,11};
prime2={3,5,7,11,13,17,19}
primes=prime1 &  prime2
primes

# 13) Difference operation on sets
prime2={3,5,7,11,13,17,19}
prime1={3,5,7,11};
primes=prime2-prime1
primes

# 14) Symmetric difference
prime2={3,5,7,11,13,17,19}
prime1={3,5,7,11,91,101};
primes=prime2 ^ prime1
primes

# 15) Compare two sets
prime1={3,5,7,11,91,101};
prime={3,5,7,11,91,101};
test=prime==prime1
test

prime1={3,5,7,11,91,101};
prime1={3,5,7,11};
test=prime2<prime1
test

#16) Membership test on sets
prime1={3,5,7,11,91,101};
test= 3 in prime1
test

# 17) Iterating on set
primes={3,5,7,11,91,101};
for prime in primes:
    print(prime);

# 18) Clearing a set
prime1
{3, 5, 101, 7, 11, 91}
prime1.clear()

#19) interesting problem
number = [1,2,3,4,5,2,3,4,7,8,9,8,12,13,14,14,19]
print (set(number))

执行上面的sets.py 将显示以下输出。正确研究上述代码以了解为什么会得到以下输出。

$ python sets.py 
3 
5 
7 
11 
91 
101 
set([1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 19])
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200