将OneNote笔记与Word文档链接的两种方法(onenote怎样打开word文档)
783
2022-05-29
'''
Python3集合
集合(set)是一个无序的、不重复的元素序列。
可以使用大括号 {} 或者 set() 函数创建集合。
注意:创建一个空集合必须使用 set() 而非 {},因为 {} 是用来创建一个空字典。
格式:
parameter = {value1, value2, ...}
或者
set(value)
'''
集合(set)是一个无序的、不重的复元素序列。
可以使用大括号 {} 或者 set() 函数创建集合,
注意:创建一个空集合必须用 set() 而不是 {} ,因为 {} 是用来创建一个空字典。
创建格式:
parameter = {value01,value02,...}
或者
set(value)
类似列表推导式,同样集合支持集合推导式(Set comprehension):
实例(Python 3.0+)
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
集合的基本操作
1、添加元素
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
# 若以上提示Function call can be replaced with set literal
# 替换为{'Google', 'Runoob', 'Taobao'}即可
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>
2、移除元素
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "
KeyError: 'Facebook'
>>>
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
脚本模式实例(Python 3.0+)
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
输出结果:
$ python3 test.py
Runoob
多次执行测试结果都不一样。
注意:set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
3、计算集合元素个数
语法格式如下:
len(s)
计算集合 s 元素个数。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3
4、清空集合
语法格式如下:
s.clear()
清空集合 s。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()
5、判断元素是否在集合中存在
语法格式如下:
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>
集合内置方法完整列表
序号
方法及描述
1
set.add(elemnt)
为集合添加元素
2
set.clear()
移除集合中的所有元素
3
set.copy()
拷贝一个集合
4
set.difference(set)
返回多个集合的差集(-)
5
set.difference_update(set)
移除集合中的元素,该元素在指定的集合也存在。差集
6
set.discard(value)
删除集合中指定的元素,移除不存在的元素时不会报错。
7
set.intersection(set1, set2...)
返回集合的交集(&)
8
set.intersection_update(set1, set2...)
返回集合的交集。
9
set.isdisjoint(set)
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
10
set.issubset(set)
判断指定集合是否为该方法参数集合的子集。
11
set.issuperset(set)
判断该方法的参数集合是否为指定集合的子集
12
set.pop()
随机移除元素
13
set.remove(item)
移除指定元素,移除不存在的元素时会报错。
14
set.symmetric_difference(set)
返回两个集合中不重复的元素集合 对称差集(^)
15
set.symmetric_difference_update(set)
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。对称差集
16
set.union(set1, set2...)
返回两个集合的并集(|)
17
set.update(set)
给集合添加元素
python 字符串操作方法详解
https://www.cnblogs.com/wj-1314/p/8419009.html
python 列表操作方法详解
https://www.cnblogs.com/wj-1314/p/8433116.html
python 字典操作方法详解
https://www.cnblogs.com/wj-1314/p/8421724.html
python 集合操作方法详解
https://www.cnblogs.com/wj-1314/p/8423273.html
# 3、计算集合元素个数:
# len(s):计算集合s元素个数
set_f = {'Google', 'Runoob', 'Taobao'}
print(len(set_f))
# 4、清空集合
# s.clear():清空集合s
set_g = {'Google', 'Runoob', 'Taobao'}
print(set_g.clear()) # 打印结果:None
# 5、判断元素是否在集合中
# x in s:判断元素x是否在集合s中,存在返回True,不存在返回False
set_h = {'Google', 'Runoob', 'Taobao'}
print('Google' in set_h)
'''集合内置方法完整列表示例'''
# 1、add():
'''
描述:
add()方法用于给集合添加元素,如果添加的元素在集合中,则不进行任何操作。
语法:
set.add(elmnt)
参数:
elmnt--必须,要添加的元素
返回值:
无
'''
fruit = {'apple', 'orange', 'peach'}
fruit.add('watermelon')
print(fruit)
fruit.add('apple') # 元素已存在,不执行任何操作
print(fruit)
fruit.add(('grape')) # add()支持元组,不支持列表、字典
print(fruit)
# 2、clear():
'''
描述:
clear()方法用于移除集合中的所有元素
语法:
set.clear()
参数:
无
返回值:
无
'''
fruit = {'apple', 'orange', 'peach'}
fruit.clear()
print(fruit) # 输出结果为:set()
# 3、copy():
'''
描述:
copy()方法用于拷贝一个集合
语法:
set.copy()
参数:
无
返回值:
无
'''
fruits = {'apple', 'banana', 'cherry'}
x = fruits.copy()
print(id(fruits), fruits)
# 2441491078720 {'banana', 'cherry', 'apple'} 地址不一样,内容一样
print(id(x), x)
# 2441491078496 {'banana', 'cherry', 'apple'} 地址不一样,内容一样
# 4、difference():差集(-)
'''
描述:
difference()方法用于返回集合的差集,
即返回一个新集合,元素在x集合而不在y集合。
语法:
set.difference(set)
参数:
set--必须,用于计算差集的集合
返回值:
返回一个新的集合
'''
# set.difference(set):返回多个集合的差集,返回一个新集合,元素在x集合而不在y集合
x = {'apple', 'orange', 'peach'}
y = {'watermelon', 'grape', 'peach'}
z = x.difference(y)
print(z)
# 类似于
print(x - y)
# 5、difference_update():差集
'''
描述:
difference_update()方法用于移除两个集合中都存在的元素,即返回差集。
difference_update()与difference()的区别:
前者是直接在原来的集合中移除元素,没有返回值;
后者返回 一个移除相同元素的新集合。
语法:
set.difference_update(set)
参数:
set--必须,用于计算差集的集合
返回值:
无
'''
x = {'apple', 'banana', 'cherry'}
y = {'google', 'microsoft', 'apple'}
x.difference_update(y)
print(x) # {'banana', 'cherry'}
# 6、discard():
'''
描述:
discard()方法用于移除指定的集合元素。
该方法不同于remove()方法,因为remove()方法在一处一个不存在的元素时会发生错误,而discard()方法不会。
语法:
set.discard(value)
参数:
value--必须,要移除的元素
返回值:
无
'''
fruits = {'apple', 'banana', 'cherry'}
fruits.discard('banana') # 删除已存在的元素
print(fruits) # {'cherry', 'apple'}
fruits.discard('watermelon')# 删除不存在的元素,不会报错
# 7、intersection():交集(&)
'''
描述:
intersection()方法用于返回两个或多个集合中都包含的元素,即交集。
语法:
set.intersection(set1, set2, ...etc)
参数:
set1--必须,要查找相同元素的集合
set2--可选,其他要查找相同元素的集合,可以多个,多个使用逗号隔开
返回值:
返回一个新的集合
'''
x = {'apple', 'orange', 'peach'}
y = {'watermelon', 'grape', 'peach'}
z = {'banana', 'ananas', 'peach'}
result = x.intersection(y, z)
print(result)
# 类似于
print(x & y & z)
# 思考如下例子:
print(x & y | z)
# intersection(set)中,set参数可以不是集合,可以是任何序列。
x = {1, 2, 3, 4, 'a', 5.6}
y = x.intersection('a') # str类型
print(y) # {'a'}
y2 = x.intersection([2]) # list类型
print(y2) # {2}
y3 = x.intersection((2,)) # tuple类型
print(y3) # {2}
# 而对字典则是与字典的key值比较:
y4 = x.intersection({'a': 2})
print(y4) # {'a'}
y5 = x.intersection({1: 2})
print(y5) # {1}
# 8、intersection_update():交集
'''
描述:
intersection_update()方法用于获取两个或多个集合中都重叠的元素,即计算交集。
intersection_update()与intersection的区别:
前者是在原始的集合上移除不重叠的元素,没有返回值;
后者返回一个新的集合。
语法:
set.intersection_update(set1, set2, ...etc)
参数:
set1--必须,要查找相同元素的集合
set2--可选,其他要查找相同元素的集合,可以多个,多个使用逗号隔开
返回值:
无
'''
x = {"apple", "banana", "cherry"} # y 集合不包含 banana 和 cherry,被移除
y = {"google", "runoob", "apple"}
z = {'watermelon', 'pumpkin', 'apple'}
result = x.intersection(y, z)
print(result) # {'apple'}
# 9、isdisjoint():
'''
描述:
isdisjoint()方法用于判断两个集合是否包含相同的元素,如果没有返回True,否则返回False。
语法:
set.isdisjoint(set1)
参数:
set--必须,要比较的集合
返回值:
返回布尔值,如果不包含返回True,否则返回False
'''
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "baidu"}
z = {'watermelon', 'pumpkin', 'apple'}
result = x.isdisjoint(y)
print(result) # 不包含,返回True
result2 = x.isdisjoint(z)
print(result2) # 包含,返回False
# 10、issubset():子集
'''
描述:
issubset()方法用于判断集合的所有元素是否都包含在指定集合中,
即 x 是否包含在 y 中,如果是则返回True,否则返回False。
语法:
set.issubset(set)
参数:
set--必须,要查找的集合
返回值:
返回布尔值,如果都包含返回True,否则返回False
'''
x = {"a", "b", "c"}
y = {"f", "e", "d", "c", "b", "a"}
z = {"f", "e", "d", "c", "b"}
result = x.issubset(y)
print(result) # x 包含在 y 中,返回True
result2 = x.issubset(z)
print(result2) # x 不包含在 y 中,返回False
# 11、issuperset():父集
'''
描述:
issuperset()方法用于判断指定集合的所有元素是否都包含在原始的集合中,
即 y 是否包含在 x 中,如果是则返回True,否则返回False。
语法:
set.issuperset(set)
参数:
set--必须,要查找的集合
返回值:
返回布尔值,如果都包含返回True,否则返回False
'''
x = {"f", "e", "d", "c", "b", "a"}
y = {"a", "b", "c"}
z = {"f", "e", "d", "c", "b"}
result1 = x.issuperset(y)
print(result1) # y 包含在 x 中,返回True
result2 = z.issuperset(y)
print(result2) # y 不包含在 z 中,返回False
# 12、pop():
'''
描述:
pop()方法用于随机移除一个元素,一般是移除左边第一个元素。
语法:
set.pop()
参数:
无
返回值:
返回移除的元素
'''
fruits = {'apple', 'banana', 'cherry'}
x = fruits.pop()
print('被移除的元素:', x) # 被移除的元素: cherry
print(fruits) # {'apple', 'banana'}
print('--------- 分割线 ---------')
### pop()方法的规律总结:
s1 = {2, 5, 7, 4} # 集合里只有数字
s2 = {'你', '我', '他', '大家'} # 集合里无数字
s3 = {3, 5, 2.9, '你', 'X', 'Y'} # 集合里既有数字又有非数字
s1.pop() # 元素是数字时,删除最小的数字,其余数字升序排列
s2.pop() # 元素非数字时,随即删除一个元素,其余元素随机排序
s3.pop() # 元素既有数字又有非数字时,若删除的是数字,则一定删除最小的,否则随机删除一个非数字元素
print(s1)
print(s2)
print(s3)
# 多次运行观察打印结果
'''
总结:
1、如果集合的元素都是数字, 删除时, 删掉的是最小的数字, 其余数字升序排列。
2、如果集合的元素是非数字, 删除时, 删掉的是随机的元素, 其余元素随机排列。
3、如果集合里既有数字又有非数字元素时:
·若删掉的是数字, 则一定是删掉了最小的, 其他数字升序排列, 非数字元素随机排列;
·若删掉的非数字, 则一定是随机删掉了一个, 其他数字升序排列, 非数字则随机排列。
'''
# 13、remove()方法用于移除集合中的指定元素:
'''
描述:
remove()方法用于移除集合中的指定元素
该方法不同于discard()方法,因为remove()方法在移除一个不存在的元素时会报错,而discard()方法不会报错。
语法:
set.remove(item)
参数:
item--要移除的元素
返回值:
无
'''
fruits = {'apple', 'banana', 'cherry'}
fruits.remove('banana')
print(fruits) # {'apple', 'cherry'}
# fruit.remove('peach') # 不存在则报错:KeyError: 'peach'
# 14、symmetric_difference():对称差集(^)
'''
描述:
symmetric_difference()方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
语法:
set.symmetric_difference(set)
参数:
set--集合
返回值:
返回一个新的集合
'''
x6 = {'apple', 'orange', 'peach'}
y6 = {'watermelon', 'grape', 'peach'}
result6 = x6.symmetric_difference(y6)
print(result6)
# 等同于
print(x6 ^ y6)
# 15、symmetric_difference_update():
'''
描述:
symmetric_difference_update()方法移除当前集合中在另一个指定集合相同的元素,
并将另一个指定集合中不同的元素插入到当前集合中。
语法:
set.symmetric_difference_update(set)
参数:
set--要检测的集合
返回值:
无
'''
x7 = {'apple', 'orange', 'peach'}
y7 = {'watermelon', 'grape', 'peach'}
x7.symmetric_difference_update(y7)
print(x7)
# 16、union():并集(|)
'''
描述:
union()方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
语法:
set.union(set1, set2, ...)
参数:
set1--必须,合并的目标集合
set2--可选,其他要合并的集合,可以多个,多个使用逗号隔开
返回值:
返回一个新集合。
'''
x8 = {'apple', 'orange', 'peach'}
y8 = {'watermelon', 'grape', 'peach'}
z8 = {'banana', 'ananas', 'peach'}
result8 = x8.union(y8, z8)
print(result8)
# 17、update():
'''
描述:
update()方法用于修改当前集合,可以添加新的元素或集合到当前集合中,
如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
语法:
set.update(set)
参数:
set--必须,可以是元素或集合
返回值:
无
'''
x9 = {'apple', 'orange', 'peach'}
y9 = {'watermelon', 'grape', 'peach'}
x9.update({'pear'}) # 新添加的元素被分隔后添加到集合中
print(x9) # 不加集合{}的字符串,结果:{'peach', 'apple', 'e', 'p', 'orange', 'r', 'a'}
x9.update(y9)
print(x9)
Python集合推导式
字典推导式的语法格式如下:
{表达式 for 迭代变量 in 可迭代对象 [if条件表达式]} # []中内容可有可无
集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样.
从上面的代码中可以总结:
集合推导式就是将列表推导式的[ ]换成{ },字典推导式就是推导出两个值并构建成键值对的样子.
另外,不管是字典推导式还是集合推导式,后面都可以像列表推导式一样接if条件语句,嵌套循环等,具体可以根据您自己的需求来使用.
'''集合推导式'''
# 遍历一个可迭代对象生成集合
set_a = {value for value in '有人风轻云淡,有人负重前行'}
print(set_a)
square = {x ** 2 for x in [2, 2, 3, 4, 5, 6]}
print(square)
# 用集合推导式建立字符串长度的集合
strings = ['a', 'is', 'with', 'if', 'file', 'exception']
set_len = {len(s) for s in strings} # 长度相同的只留一个,这在实际上非常有用
print(set_len)
# 一个由男生和女生列表组成的嵌套列表,取出姓名中带有两个以上字母e的名字,组成列表
names = [
['Tom','Billy','Jefferson','Andrew','Wesley','Steven','Joe'],
['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']
]
# 用for循环实现:
tmp = []
for lst in names:
for name in lst:
if name.count('e') >= 2:
tmp.append(name)
print(tmp) # ['jefferson', 'wesley', 'steven', 'jennifer']
# 用推导式嵌套列表实现:
result1 = [name for lst in names for name in lst if name.count('e') >= 2]
print(result1) # ['jefferson', 'wesley', 'steven', 'jennifer']
# result1 = [[name for lst in names]for name in lst if name.count('e') >= 2] # 这个式子该怎么写?这个语句是错误的,正确语句如下
result2 = [[name for name in lst if name.count('e') >= 2] for lst in names]
print(result2) # [['jefferson', 'wesley', 'steven'], ['jennifer']]
'''
小练习:
1、产生10个1~20的随机数,去除里面的重复项
2、键盘输入一个数,将该数从不重复的集合中删除
'''
import random
set1 = set()
i = 1
while i <= 10:
rand = random.randint(1, 20)
if rand not in set1:
set1.add(rand)
i += 1
print(set1, len(set1))
# {3, 6, 7, 8, 13, 15, 16, 18, 19, 20} 10
num = int(input('输入一个要删除的数字:')) # 需强转为int型
if num in set1:
set1.remove(num)
# 或
# set1.discard(num)
print(set1, len(set1))
# 输入3后,{6, 7, 8, 13, 15, 16, 18, 19, 20} 9
else:
print('集合里不存在该数!')
set1 = {2, 3, 4, 5}
set2 = {2, 3, 4, 5}
print(id(set1), id(set2)) # 查看两个集合的地址
print(set1 == set2) # 判断两个集合中的内容是否相等
print(set1 != set2) # 判断两个集合中的内容是否不相等
Python
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。