set集合判断集合中是否有⽆元素_Python⼊门教程笔记(五)
集合(set)及函数
三九、什么是set
在前⾯,我们学习了dict,知道dict的key是不重复的,当我们往dict⾥添加⼀个相同key的value时,新的value将会覆盖旧的value。
有的时候,我们只想要 dict 的 key,不关⼼ key 对应的 value,⽬的就是保证这个集合的元素不会重复,这时,set就派上⽤场了。
set和list类似,拥有⼀系列元素,但是set和list不⼀样,set⾥⾯的元素是不允许重复的,⽽list⾥⾯可以包含相同的元素;set与list的另⼀个区别是,set⾥⾯的元素是没有顺序的。
创建set的⽅式是使⽤set(),并传⼊⼀个list,list的元素将会被转换成set的元素。
set([1, 4, 3, 2, 5])
需要注意的是,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是⽆序的。
另外,set不能包含重复的元素,我们传⼊重复的元素看看会发⽣什么。
set([1, 4, 3, 2, 5, 4, 2, 3, 1])
可以看到,在传⼊set()的list中,包含了重复的元素,但是打印的时候,相同的元素只保留了⼀个,重复的元素都被去掉了,这是set的⼀个重要特点。
四⼗、读取set元素
由于set⾥⾯的元素是没有顺序的,因此我们不能像list那样通过索引来访问。访问set中的某个元素实际上就是判断⼀个元素是否在set中,这个时候我们可以使⽤in来判断某个元素是否在set中。
⽐如,存储了班⾥同学名字的set。
'Alice',
请问'Alice'是班⾥⾯的同学吗?
'Alice'
请问'Bobby'是班⾥⾯的同学吗?
'Bobby'
请问'bob'是班⾥⾯的同学吗?
'bob'
这个时候是否输出了不符合预期的结果?'Bob'是在name_set⾥⾯的,为什么输出了False呢?这是因为set元素是区分⼤⼩写的,必须⼤⼩写完全匹配,才能判断该元素在set⾥⾯。
四⼀、添加set元素
我们通过set()传⼊list的⽅法创建了set,如果set在使⽤过程中需要往⾥⾯添加元素,这个时候应该怎么添加呢?
set提供了add()⽅法,我们可以使⽤add()⽅法,往set⾥⾯添加元素。
⽐如,班⾥⾯来了新的同学,名字叫Gina。
'Alice',
可以看到,'Gina'已经添加到name_set⾥⾯去了。对于set,如果添加⼀个已经存在的元素,不会报错,
也不会改变什么。
'Alice',
有些时候需要批量往set⾥⾯添加元素,如果⼀个⼀个add是⽐较⿇烦的,有没有批量往set⾥⾯添加元素的⽅法呢?
set提供了update()⽅法,可以⼀次性给set添加多个元素。
⽐如,新来了⼀批同学,名字分别是['Hally', 'Isen', 'Jenny', 'Karl'],则可以使⽤update()⽅法,批量往set中添加。
'Alice',
四⼆、删除set元素
和list、dict⼀样,有时候我们也需要考虑删除set的元素。
set提供了remove()⽅法允许我们删除set中的元素。
set([
需要注意的是,如果remove的元素不在set⾥⾯的话,那么将会引发错误。
set([
因此,使⽤remove()⽅法,我们需要格外⼩⼼,需要提前判断要remove()的元素是否在set⾥⾯,确保存在后,再进⾏remove。四三、操作set的其他⽅法
不会报错的删除⽅法discard()
除了使⽤remove()⽅法删除元素以外,还可以使⽤discard()⽅法删除元素,并且,和remove()不同的是,当元素不存在时,使⽤discard()并不会引发错误,所以使⽤discard()是更加⾼效的⼀个⽅法。
set([
清除所有元素的⽅法clear()
和dict⼀样,set也提供了clear()⽅法,可以快速清除set中的所有元素。
set([
集合的⼦集和超集
set提供⽅法判断两个set之间的关系,⽐如两个集合set,判断其中⼀个set是否为另外⼀个set的⼦集或者超集。
set([1, 2, 3, 4, 5])
判断集合是否重合
有时候需要判断两个集合是否有重合的地⽅,如果使⽤传统的⽅法,需要使⽤for循环⼀个⼀个的去判断,⾮常⿇烦,set提供isdisjoint()⽅法,可以快速判断两个集合是否有重合,如果有重合,返回False,否则返回True。
c语言数据类型表
set([1, 2, 3, 4, 5])
四四、什么是函数
对于什么是函数,其实在前⾯的学习过程当中,已经多次接触到函数了,⽐如在set⾥⾯,使⽤remove()函数进⾏元素的删除,使⽤add()函数添加元素,使⽤update()函数批量添加元素,但是⾄今为⽌,我们都没有对函数有个充分的认识。本章,我们将具体学习函数。
我们知道圆的⾯积计算公式为:
S = πr²
当我们知道半径r的值时,就可以通过公式计算出⾯积,假设我们需要计算3个不同⼤⼩的圆的⾯积:
r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
可以看到,在上述代码中,出现了⼏乎完全重复的代码,每次计算圆的⾯积的时候我们都是通过3.14*x*x(其中x是圆的半径)的⽅式计算出来的,这样写不仅⾮常⿇烦,⽽且,当我们需要提⾼圆周率的精度时,把3.14改成3.14159265359的时候,我们需要修改涉及到的三⾏代码。
因此,我们可以使⽤函数,把重复的逻辑代码封装起来,这样⼦,我们就不需要每次计算的时候,都
写3.14*x*x这样的代码了;当我们使⽤函数的时候,我们只需要定义⼀次,就可以多次使⽤。
我们把封装重复逻辑代码的过程就做抽象,抽象是数学中⾮常常见的概念。
⽐如:计算数列的和,⽐如:1 + 2 + 3 + ... + 100,写起来⼗分不⽅便,于是数学家发明了求和符号∑,可以把1 + 2 + 3 + ... + 100记作:
这种抽象记法⾮常强⼤,因为我们看到∑就可以理解成求和,⽽不是还原成低级的加法运算。
⽽且,这种抽象记法是可扩展的,⽐如:
还原成加法运算就变成了:
(1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + ... + (100 x 100 + 1)
可见,借助抽象,我们才能不关⼼底层的具体计算过程,⽽直接在更⾼的层次上思考问题。
写计算机程序也是⼀样,函数就是最基本的⼀种代码抽象的⽅式。
Python不但能⾮常灵活地定义函数,⽽且本⾝内置了很多有⽤的函数,可以直接调⽤。
Python调⽤函数
Python内置了很多有⽤的函数,我们可以直接调⽤。⽐如前⾯求list的长度len()函数等等,都是Python内置的函数,我们经常会使⽤到它们。
在这个⽂档⾥⾯,列举了Python内置的⼤部分函数,同学们有兴趣可以参考看看。
///3/library/functions.html
要调⽤⼀个函数,需要知道函数的名称和参数,⽐如求绝对值的函数 abs(),它接收⼀个参数。
对于abs()函数,abs就是函数的名称,括号()内,就是函数的参数,当函数没有参数时,默认就是⼀个空括号。abs接收⼀个参数,这个参数就是需要求绝对值的数,这个参数可以是整数,也可以是浮点数
# ==> 100
需要注意的是,传递的参数数量⼀定要和函数要求的⼀致,不然将会引起错误,⽐如,如果在abs()函数中传⼊两个参数。
1,
informix数据库连接工具在错误提⽰中,清晰的说明了abs()函数只接收⼀个参数,但是却传递了两个参数,所以引起了错误。
其次,如果传⼊的参数数量是对的,但是参数的类型不能被函数所接受,也会引起错误,⽐如:求绝对值的函数abs(),只有数字才拥有绝对值,如果传递⼀个字符串进去,将会引起错误。
'3.1415926')
这⾥错误提⽰说,str类型是错误的参数类型。
除了abs()函数,还有很多常见的函数,⽐如cmp()函数,可以⽐较两个数的⼤⼩,这个时候,cmp()函数就接收两个参数。
对于cmp(x, y),如果x < y 返回 -1,如果x == y 函数返回0,如果x > y函数返回1。
# ==> -1
还有基础数据类型的转换函数,int()函数可以将合法的其它类型数据转换为整数,str()函数可以将其它类型的数据转换为字符串。
'123')
lineheight不知道高度居中在学习Python的过程中,我们将会接触到越来越多的Python内置函数,这些内置函数提供了⾮常有⽤的功能,⼤⼤降低我们编程的难度。四五、定义函数
除了使⽤Python内置的函数以外,在编程过程中,我们也经常需要⾃⼰定义函数。
在Python中,定义⼀个函数要使⽤ def 语句,依次写出函数名、括号()、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值⽤ return 语句返回。
我们以定义⼀个求绝对值的函数my_abs函数为例:
def
请注意,return表⽰返回的意思,函数体内部的语句在执⾏时,⼀旦执⾏到return时,函数就执⾏完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现⾮常复杂的逻辑。
我们继续定义⼀个求列表list所有元素的和的函数:
def
这样⼦我们就定义了⼀个sum_list()的函数,注意,在最后return,我们把求和的结果result返回了,这样就可以在外部调⽤函数后获得result。
L = [1, 3, 5, 7, 9, 11]
result =list_sum(L) # 调⽤定义的sum_list函数并获得return返回的结果
print(result)
四六、函数返回值
我们在函数⾥⾯使⽤return返回了计算的结果,在外部调⽤这个函数的时候,就可以接收到结果。
有时候函数是没有返回结果的,这个时候从函数获取到的是⼀个空值None。
我们对list_sum()这个函数进⾏简单的修改,在函数内把结果打印出来,不通过return返回结果。
def
在print(result)中,我们得到None的结果,这是合理的,因为在函数内部,我们把结果打印出来了,但是没有把结果返回。
除了返回None、⼀个值以外,函数也可以返回多个值,在函数中,如果需要返回多个值,多个值之间使⽤逗号分隔即可,但是需要注意顺序。
⽐如,定义⼀个函数data_of_square,接收边长⼀个参数,同时返回正⽅形的周长和⾯积。
def
诺基亚java游戏下载网站也可以使⽤⼀个值存储函数返回的多值结果。
result = data_of_square(16)
print(result) # ==> (64, 256)
注意打印的result,其实它是tuple类型,如果我们需要取出结果中的周长或者⾯积,使⽤对应位置的下
标就可以获得对应的结果。
result = data_of_square(16)
python入门教程 非常详细 pdfC = result[0]
S = result[1]
print('周长 = {}'.format(C)) # ==> 周长 = 64
print('⾯积 = {}'.format(S)) # ==> ⾯积 = 256
四七、递归函数
在函数内部,还可以调⽤其他函数,⽐如实现函数data_of_square的时候,它接收边长⼀个参数,同时返回正⽅形的周长和⾯积,⽽求周长和求⾯积是完全独⽴的逻辑,可以定义成两个新的函数,然后在data_of_square函数中再调⽤这两个函数,得到结果并返回。
乱世佳人男主def

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。