散列类型和逻辑运算
散列类型
散列类型包含集合和字典
集合
定义
>>> myset = {1,2,3,4,1}
>>> myset
{1, 2, 3, 4}
>>> type(myset)
<class 'set'>
由以上定义可见,集合可以用来去重,其值唯一
运算
&
交集 (获取两集合中相同的元素)
>>> myset1 = {1,2,3,4}
>>> myset2 = {2,3,4,5}
>>> myset = myset1 & myset2
>>> myset
{2, 3, 4}
|
并集 (将两个集合叠加)
>>> myset1 = {1,2,3,4}
>>> myset2 = {2,3,4,5}
>>> myset = myset1 | myset2
>>> myset
{1, 2, 3, 4, 5}
-
差集 (获取前集合中有、后集合中没有的元素)
>>> myset1 = {1,2,3,4}
>>> myset2 = {2,3,4,5}
>>> myset = myset2 - myset1
>>> myset
{5}
集合的基本操作
增
①add (在集合末尾添加一个元素)
>>> myset = {1,2,3}
>>> myset.add(4)
>>> myset
{1, 2, 3, 4}
②update (更新集合里面的元素,要么以元素的形式添加,要么以列表或者元组的形式添加)
>>> myset = {1,2,3}
>>> myset.update([4,5,6])
>>> myset
{1, 2, 3, 4, 5, 6}
>>> myset.update((7,8,9))
>>> myset
{1, 2, 3, 4, 5, 6, 7, 8, 9}
删
①pop (随机删除一个数)
>>> myset = {1,2,3}
>>> myset.pop()
1
>>> myset.pop()
2
>>> myset
{3}
②remove (指定内容删除元素)
>>> myset = ['I','LOVE','PYTHON','!']
>>> myset.remove('!')
>>> myset
['I', 'LOVE', 'PYTHON']
字典
定义
>>> mydic = {'name':'SuXin','age':18,'sex':'Man'}
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
字典以键值对形式定义,其中键唯一,值可以不唯一,一个键可以对应多个值,但一个值只能对应一个键
字典的操作
增
①copy
(和列表的copy一样)
>>> mydic = {'name':'SuXin','age':18,'sex':'Man'}
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
>>> mydic1 = mydic.copy()
>>> mydic1
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
②setdefault
(如果要添加的键值对在原字典里存在,则返回该字符,如果不存在,则添加)
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
>>> mydic.setdefault('name','SuXin')
'SuXin'
>>> mydic.setdefault('height','180')
'180'
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man', 'height': '180'}
删
①pop
(指定键名删除键值对)
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man', 'height': '180'}
>>> mydic.pop('height')
'180'
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
②popitem
(随机删除键值对)
>>> mydic
{'name': 'SuXin', 'age': 18, 'sex': 'Man'}
>>> mydic.popitem()
('sex', 'Man')
>>> mydic
{'name': 'SuXin', 'age': 18}
③clear
(清除整个字典里面的所有键值对)
>>> mydic
{'name': 'SuXin', 'age': 18}
>>> mydic.clear()
>>> mydic
{}
改
update
(添加一个字典或者多个键值对进去,也可用这个方法来拼接字典)
>>> mydic = {'name':'SuXin','gae':18}
>>> mydic1 = {'sex':'Man'}
>>> mydic.update(mydic1)
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man'}
>>> mydic.update({'height':180,'hoby':'python'})
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man', 'height': 180, 'hoby': 'python'}
查
①get
(查取值,如果字典中包含,则返回该值,不存在则不返回任何信息)
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man', 'height': 180, 'hoby': 'python'}
>>> mydic.get('name')
'SuXin'
②key
(查取键)
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man', 'height': 180, 'hoby': 'python'}
>>> mydic.keys()
dict_keys(['name', 'gae', 'sex', 'height', 'hoby'])
获取键名流程:先用keys提取所有键名,转换成列表,然后赋值给一个变量,通过查找列表元素的方式查找键名
③values
(获取字典中所有值,以列表的形式输出)
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man', 'height': 180, 'hoby': 'python'}
>>> mydic_values = mydic.values()
>>> mydic_values
dict_values(['SuXin', 18, 'Man', 180, 'python'])
④items
(获取字典所有信息,以元组的形式输出)
>>> mydic
{'name': 'SuXin', 'gae': 18, 'sex': 'Man', 'height': 180, 'hoby': 'python'}
>>> mydic.items()
dict_items([('name', 'SuXin'), ('gae', 18), ('sex', 'Man'), ('height', 180), ('hoby', 'python')])
比较运算符
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
判断
语法
if 判断条件:
条件成立所要执行的动作
elif 添加判断条件:
条件成立所要执行的动作
else:
判断条件不成立所要执行的动作
#判断一个数在5和10之间
a = 6
if a > 5 and a <10:
print("True")
else:
print("False")
以上是一个简单的判断语句,还可以将其改写,实现相同的功能
#判断一个数在5和10之间
a = 6
if a > 5:
if a < 10:
print ("True")
else:
pass
else:
print ("False")
接下来再写一个,判断这个数在哪个区间
#判断一个数所在的区间
a = 16
if a <= 5:
print ("该数介于0和5之间")
elif a <=10:
print ("该数介于5和10之间")
elif a <=15:
print ("该数介于10和15之间")
elif a <=20:
print ("该数介于15和20之间")
else:
print ("超出计算范围!")
三目运算
假设现在需要判断一个值是否大于等于10,如果成立,返回该值并说明,不成立则退出程序
#判断一个数是否大于等于5
a = 8
if a >= 5:print (a,"大于等于5")else:
pass
而使用三目运算则会大大减少代码量
三目运算的语法:
条件成立时 if 判断的条件 else 条件不成立时
#判断一个数是否大于等于5
a = 2
print (a,"大于等于5") if a >= 5 else print(' ')
注:三目运算只适合于一个判断条件,一般不常用
循环控制
while
循环
语法
while 判断条件:
循环体
例如
#连续打印小于等于10的所有自然数
a = 0
while a <= 10:
print (a)
a += 1
如果需要遍历整个列表,也需要用到循环
#遍历整个列表,提取小于等于5的元素
mylist = [1,2,3,4,5,6,7,8,9,10,11]
i = 0
while mylist[i] <= 5:
print(mylist[i])
i += 1
#将列表里的元素分别与20比较,打印出大于20的元素
mylist = [1,2,4,44,34,34,65,63,77,567,678]
i = 0
while i <= len(mylist)-1:
if mylist[i] > 20:
print ("%s大于20"%mylist[i])
i += 1
while True:
为死循环,多用于阻塞使用。
for
循环
语法
for 变量 in 被遍历体:
循环体
例如
#遍历整个列表,输出每个元素
mylist = [1,2,4,44,34,34,65,63,77,567,678]
for i in mylist:
print (i)
break
(跳出当前的循环)
#遍历整个列表,如果有元素为5,则停止循环
for i in range(1,20):
if i == 5:
break
print (i)
continue
(跳过此处的动作,继续后边的循环)
#遍历整个列表,如果有元素为5,则不执行该条件下的动作,继续后边的动作
for i in range(1,10):
if i == 5:
continue
print (i)