本文概述
- 创建一个集合
- 示例1:使用花括号
- 示例2:使用set()方法
- Python Set操作
- 将项目添加到集合中
- 例子
- 例子
- 从集合中删除项目
- 例子
- 例子
- Dispose()和remove()之间的区别
- 例子
- 两套并集
- 示例1:使用union |算子
- 示例2:使用union()方法
- 两套相交
- 示例1:使用&运算符
- 示例2:使用intersection()方法
- section_update()方法
- 两组差异
- 示例1:使用减法(-)运算符
- 示例2:使用difference()方法
- 设置比较
- 冻结集
- 字典的Frozenset
- Python内置设置方法
python中的set可以定义为花括号中包含的各种项目的无序集合。集合中的元素不能重复。 python集合的元素必须是不可变的。
与python中的其他集合不同, 该集合的元素没有附加索引, 即, 我们无法通过索引直接访问集合的任何元素。但是, 我们可以将它们全部打印在一起, 也可以通过遍历集合来获取元素列表。
创建一个集合
可以通过用花括号将逗号分隔的项目括起来来创建集合。 Python还提供了set方法, 可用于通过传递的序列来创建set。
示例1:使用花括号
Days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}
print(Days)
print(type(Days))
print("looping through the set elements ... ")
for i in Days:
print(i)
输出
{'Friday', 'Tuesday', 'Monday', 'Saturday', 'Thursday', 'Sunday', 'Wednesday'}
<class 'set'>
looping through the set elements ...
Friday
Tuesday
Monday
Saturday
Thursday
Sunday
Wednesday
示例2:使用set()方法
Days = set(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"])
print(Days)
print(type(Days))
print("looping through the set elements ... ")
for i in Days:
print(i)
输出
{'Friday', 'Wednesday', 'Thursday', 'Saturday', 'Monday', 'Tuesday', 'Sunday'}
<class 'set'>
looping through the set elements ...
Friday
Wednesday
Thursday
Saturday
Monday
Tuesday
Sunday
Python Set操作
在前面的示例中, 我们讨论了如何在python中创建集合。但是, 我们可以对python集执行各种数学运算, 例如并集, 交集, 差等。
将项目添加到集合中
Python提供了add()方法, 可用于将某些特定项目添加到集合中。考虑以下示例。
例子
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nAdding other months to the set...");
Months.add("July");
Months.add("August");
print("\nPrinting the modified set...");
print(Months)
print("\nlooping through the set elements ... ")
for i in Months:
print(i)
输出
printing the original set ...
{'February', 'May', 'April', 'March', 'June', 'January'}
Adding other months to the set...
Printing the modified set...
{'February', 'July', 'May', 'April', 'March', 'August', 'June', 'January'}
looping through the set elements ...
February
July
May
April
March
August
June
January
要在集合中添加多个项目, Python提供了update()方法。
考虑以下示例。
例子
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nupdating the original set ... ")
Months.update(["July", "August", "September", "October"]);
print("\nprinting the modified set ... ")
print(Months);
输出
printing the original set ...
{'January', 'February', 'April', 'May', 'June', 'March'}
updating the original set ...
printing the modified set ...
{'January', 'February', 'April', 'August', 'October', 'May', 'June', 'July', 'September', 'March'}
从集合中删除项目
Python提供了throw()方法, 该方法可用于从集合中删除项目。
考虑以下示例。
例子
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nRemoving some months from the set...");
Months.discard("January");
Months.discard("May");
print("\nPrinting the modified set...");
print(Months)
print("\nlooping through the set elements ... ")
for i in Months:
print(i)
输出
printing the original set ...
{'February', 'January', 'March', 'April', 'June', 'May'}
Removing some months from the set...
Printing the modified set...
{'February', 'March', 'April', 'June'}
looping through the set elements ...
February
March
April
June
Python还提供了remove()方法来从集合中删除项目。考虑以下示例, 使用remove()方法删除项目。
例子
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nRemoving some months from the set...");
Months.remove("January");
Months.remove("May");
print("\nPrinting the modified set...");
print(Months)
输出
printing the original set ...
{'February', 'June', 'April', 'May', 'January', 'March'}
Removing some months from the set...
Printing the modified set...
{'February', 'June', 'April', 'March'}
我们还可以使用pop()方法删除该项目。但是, 此方法将始终删除最后一项。
考虑以下示例, 从集合中删除最后一个项目。
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nRemoving some months from the set...");
Months.pop();
Months.pop();
print("\nPrinting the modified set...");
print(Months)
输出
printing the original set ...
{'June', 'January', 'May', 'April', 'February', 'March'}
Removing some months from the set...
Printing the modified set...
{'May', 'April', 'February', 'March'}
Python提供了clear()方法来删除集合中的所有项目。
考虑以下示例。
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nRemoving all the items from the set...");
Months.clear()
print("\nPrinting the modified set...")
print(Months)
输出
printing the original set ...
{'January', 'May', 'June', 'April', 'March', 'February'}
Removing all the items from the set...
Printing the modified set...
set()
Dispose()和remove()之间的区别
尽管discard()和remove()方法都执行相同的任务, 但是discard()和remove()之间有一个主要区别。
如果要使用set()从集合中删除的键在集合中不存在, 则python不会给出错误。该程序将保持其控制流。
另一方面, 如果集合中不存在要使用remove()从集合中删除的项目, 则python将给出错误。
考虑以下示例。
例子
Months = set(["January", "February", "March", "April", "May", "June"])
print("\nprinting the original set ... ")
print(Months)
print("\nRemoving items through discard() method...");
Months.discard("Feb"); #will not give an error although the key feb is not available in the set
print("\nprinting the modified set...")
print(Months)
print("\nRemoving items through remove() method...");
Months.remove("Jan") #will give an error as the key jan is not available in the set.
print("\nPrinting the modified set...")
print(Months)
输出
printing the original set ...
{'March', 'January', 'April', 'June', 'February', 'May'}
Removing items through discard() method...
printing the modified set...
{'March', 'January', 'April', 'June', 'February', 'May'}
Removing items through remove() method...
Traceback (most recent call last):
File "set.py", line 9, in
Months.remove("Jan")
KeyError: 'Jan'
两套并集
使用或(|)运算符可计算两组的并集。这两个集合的并集包含两个集合中存在的所有项目。
考虑下面的示例来计算两个集合的并集。
示例1:使用union |算子
Days1 = {"Monday", "Tuesday", "Wednesday", "Thursday"}
Days2 = {"Friday", "Saturday", "Sunday"}
print(Days1|Days2) #printing the union of the sets
输出
{'Friday', 'Sunday', 'Saturday', 'Tuesday', 'Wednesday', 'Monday', 'Thursday'}
Python还提供了union()方法, 该方法还可用于计算两个集合的并集。考虑以下示例。
示例2:使用union()方法
Days1 = {"Monday", "Tuesday", "Wednesday", "Thursday"}
Days2 = {"Friday", "Saturday", "Sunday"}
print(Days1.union(Days2)) #printing the union of the sets
输出
{'Friday', 'Monday', 'Tuesday', 'Thursday', 'Wednesday', 'Sunday', 'Saturday'}
两套相交
&(交集)运算符用于计算python中两个集合的交集。给出两个集合的交集作为两个集合中共有的元素的集合。
考虑以下示例。
示例1:使用&运算符
set1 = {"Ayush", "John", "David", "Martin"}
set2 = {"Steve", "Milan", "David", "Martin"}
print(set1&set2) #prints the intersection of the two sets
输出
{'Martin', 'David'}
示例2:使用intersection()方法
set1 = {"Ayush", "John", "David", "Martin"}
set2 = {"Steave", "Milan", "David", "Martin"}
print(set1.intersection(set2)) #prints the intersection of the two sets
输出
{'Martin', 'David'}
section_update()方法
section_update()方法从原始集中删除两个集中都不存在的项目(如果指定了多个, 则为所有集中)。
Intersection_update()方法与intersection()方法的不同之处在于, 它通过删除不需要的项来修改原始集合, 而intersection()方法则返回一个新集合。
考虑以下示例。
a = {"ayush", "bob", "castle"}
b = {"castle", "dude", "emyway"}
c = {"fuson", "gaurav", "castle"}
a.intersection_update(b, c)
print(a)
输出
{'castle'}
两组差异
可以通过使用减法(-)运算符来计算两组的差。通过从集合1中删除集合2中存在的所有元素, 可以获得结果集合。
考虑以下示例。
示例1:使用减法(-)运算符
Days1 = {"Monday", "Tuesday", "Wednesday", "Thursday"}
Days2 = {"Monday", "Tuesday", "Sunday"}
print(Days1-Days2) #{"Wednesday", "Thursday" will be printed}
输出
{'Thursday', 'Wednesday'}
示例2:使用difference()方法
Days1 = {"Monday", "Tuesday", "Wednesday", "Thursday"}
Days2 = {"Monday", "Tuesday", "Sunday"}
print(Days1.difference(Days2)) # prints the difference of the two sets Days1 and Days2
输出
{'Thursday', 'Wednesday'}
设置比较
Python允许我们对集合使用比较运算符, 即<, >, <=, > =和==, 通过它们我们可以检查集合是子集, 超集还是等效于其他集。根据集合中存在的项目返回布尔值true或false。
考虑以下示例。
Days1 = {"Monday", "Tuesday", "Wednesday", "Thursday"}
Days2 = {"Monday", "Tuesday"}
Days3 = {"Monday", "Tuesday", "Friday"}
#Days1 is the superset of Days2 hence it will print true.
print (Days1>Days2)
#prints false since Days1 is not the subset of Days2
print (Days1<Days2)
#prints false since Days2 and Days3 are not equivalent
print (Days2 == Days3)
输出
True
False
False
冻结集
冻结集是普通集的不变形式, 即, 冻结集的项不能更改, 因此可以用作字典中的键。
创建后, 冻结集合的元素无法更改。我们不能通过使用诸如add()或remove()之类的方法来更改或追加冻结集的内容。
Frozenset()方法用于创建Frozenset对象。可迭代序列传递给此方法, 该方法将转换为冻结集, 作为该方法的返回类型。
考虑以下示例以创建冻结集。
Frozenset = frozenset([1, 2, 3, 4, 5])
print(type(Frozenset))
print("\nprinting the content of frozen set...")
for i in Frozenset:
print(i);
Frozenset.add(6) #gives an error since we cannot change the content of Frozenset after creation
输出
<class 'frozenset'>
printing the content of frozen set...
1
2
3
4
5
Traceback (most recent call last):
File "set.py", line 6, in <module>
Frozenset.add(6) #gives an error since we can change the content of Frozenset after creation
AttributeError: 'frozenset' object has no attribute 'add'
字典的Frozenset
如果将字典作为序列传递给Frozenset()方法内的序列, 它将仅接收字典中的键, 并返回一个包含字典键作为其元素的Frozenset。
考虑以下示例。
Dictionary = {"Name":"John", "Country":"USA", "ID":101}
print(type(Dictionary))
Frozenset = frozenset(Dictionary); #Frozenset will contain the keys of the dictionary
print(type(Frozenset))
for i in Frozenset:
print(i)
输出
<class 'dict'>
<class 'frozenset'>
Name
Country
ID
Python内置设置方法
Python包含以下用于集合的方法。
SN | Method | Description |
---|---|---|
1 | add(item) | 它将一个项目添加到集合中。如果该商品已经存在于集合中, 则没有任何效果。 |
2 | clear() | 它将删除集合中的所有项目。 |
3 | copy() | 它返回集合的浅表副本。 |
4 | 差异更新(….) | 它通过删除指定集中还存在的所有项目来修改此集中。 |
5 | discard(item) | 它从集中删除指定的项目。 |
6 | intersection() | 它返回一个仅包含两个集合的公共元素的新集合。 (如果指定了两个以上的所有集合)。 |
7 | 交集更新(….) | 它将从原始集中删除两个集中都没有的项目(如果指定了多个, 则所有集中)。 |
8 | 冰脱节(….) | 如果两个集合的交点为空, 则返回True。 |
9 | Issubset(….) | 报告另一个集合是否包含该集合。 |
10 | Issuperset(….) | 报告此集合是否包含另一个集合。 |
11 | pop() | 移除并返回任意set元素, 该元素是set的最后一个元素。如果集合为空, 则引发KeyError。 |
12 | remove(item) | 从集合中删除一个元素;它必须是成员。如果元素不是成员, 则引发KeyError。 |
13 | symmetric_difference(….) | 从集合中删除一个元素;它必须是成员。如果元素不是成员, 则引发KeyError。 |
14 | symmetric_difference_update(….) | 用本身和另一个的对称差异更新一个集合。 |
15 | 联盟(….) | 将集合的并集作为新集合返回。 (即任一组中的所有元素。) |
16 | update() | 用本身和其他元素的并集更新集合。 |
评论前必须登录!
注册