目录
一、列表[]
1.增加函数:
append() –> list.append()
extend() –> list.extend()
insert() –> list.insert()
2.删除函数
删除列表中的元素:del –> del list[]
移除列表最后的元素:pop() –> list.pop()
移除列表中某个值的第一匹配值:remove() –> list.remove()
3.列表排序
将元素反放:reverse() –> list.reverse()
将元素排序:sort() –> list.append(key=len,reverse=ture)以长度为参数,逆序排序
将元素排序,并返回新列表,不改变原来:sorted() –> list1.reverse(list)
二、元组()
将列表转化为元组:tuple() –> tuple([1,2,3])
第六章 字典和集合
6.1字典
6.1.1 什么字典?
字典是python中常用的一种数据储存结构,由”键-值“对组成,
其中:键可以是python中任意不可变数据,如:整数、实数、复数、字符串、元组
值可以是任意数据类型
6.1.2 怎么创建字典
①直接赋值
变量名={键1:值1,键2:值2}
stu={'num':'20010101','name':'xiaohua'}
②使用dict(),通过其他字典创建
stu=dict('num':'20010101','name':'xiaohua')
stu2=dict(stu1)
stu3=dict(zip(['num','name'],['xiaohua'.'20180101'])
stu4=dict(name=201283',sex='male')
zip()函数:将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象
list_str=['a','b','c']
list_num=[1,2,3]
list=zip(list_str,list_num)
③使用fromkeys创建字典
但所有的键对应同一个值的时候,可使用fromkeys()创建字典
stu=dict.fromkeys(['wangwu','zhangsan']) #创建字典,"键"值默认为"none" --> {'wangwu':none,'zhangsan':none}
stu2=dict.fromkeys(['wangwu','zhangsan','18']) --> {'wangwu':18,'zhangsan':18}
6.1.3 字典的访问
①根据键值访问值
stu={'num':'20180105','name':'inbing','sex':'male'}
stu['num'] -->'20180105'
②使用get()方法访问值
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.get('num') -->'20180105'
6.2字典的基本操作
6.2.1 添加和修改元素
stu={'num':'20180105','name':'inbing','sex':'male'}
stu['age']='18' #添加学生的年龄
stu['sex']='female' #修改性别
6.2.2 删除元素
①del命令
stu={'num':'20180105','name':'inbing','sex':'male'}
del stu['sex'] #删除sex及其值
②clear() :清空字典
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.clear() ---> {} #清空字典
③pop() :删除age键值,并返回值
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.pop('sex') ----> 'male' #删除sex键值,并返回值
④popitem() :随机选取一个键值对,删除并返回键值
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.popitem() #随机选取一个键值对,删除并返回键值
6.2.3 更新字典
使用update()方法可以将新字典中的键值对一次性全部添加到当前字典中
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.update({'age':'18','sex':'female'}) #修改sex,并添加age
6.2.4 复制字典
复制字典可调用copy()方法,copy()返回值点的浅复制,返回值为一个新字典
深复制:deepcopy(),完全复制父对象及其子对象
stu={'num':'20180105','name':'inbing','sex':'male'}
stu.copy() ---> {'num':'20180105','name':'inbing','sex':'male'} #返回值为一个新字典
6.3 字典的遍历
6.3.1 遍历字典中所有的“键-值”对
需要用到items()方法
stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for name,cla in stu.items():
print(name,'选修的是',cla)
6.3.2 遍历字典中所有的键
当不需要使用字典里的值时,可使用keys()方法只遍历字典中的键,该方法以列表返回一个字典中所有的键
stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for name in stu.keys():
print(name)
6.3.3 遍历字典中所有的值
当只关心字典中的值时,可以用values(),该方法以列表返回一个字典中所有的值
stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for cla in stu.values():
print(cla)
6.4 嵌套
将字典储存在列表里或者将列表作为值储存在字典里,则称为嵌套,可以在列表中嵌套字典、在字典中嵌套列表、字典中嵌套字典
6.4.1 列表中嵌套字典
stu1={'name':'zhangsan','age':'19'} #定义字典stu1
stu1={'name':'xiaohong','age':'18'} #定义字典stu2
list=[stu1,stu2] #创建包含两个字典的列表
for s in list: #遍历列表
print(s)
6.4.2 字典中嵌套列表
stu={'marry':['C','math'],'jone':['java','art'],'lily':['python','english'],'tony':['c#','chinese']}
for name,cla in stu.items():
print(name,'选修的是',cla)
for c in cla:
print(c)
6.4.3 字典中嵌套字典
stu={
'wangmi':{'sex':'f','age':'15'},
'linmei':{'sex':'m','age':'18'},
'xiaoming':{'sex':'f','age':'19'}
}
for name,inf in stu.items():
print(name,'性别:',inf['sex'],'年龄:',inf['age'])
6.5 集合
集合,既包含0个或多个数据项的无序组合,元素不能重复,只能是固定的数值类型,如:整数、浮点、字符串、元组,不能是列表、字典、集合等可变数据类型
python库提供了一个hash()函数来计算对象的哈希值,能被计算出哈希值的都不能作为集合的元素,也不能作为字典对象的“键”
6.5.1 创建集合
a={1,2,3,4}
a --->{1,2,3,4}
b={1,5,34,1,85,3,34}
b --->{1,3,5,34,85}
由于集合元素是无序的,集合的打印效果和定义顺序可以是不一致的
可以使用set()函数将列表、元组等其他类型转换为集合
b=set('runboot')
b ---> {'r','u',;'n','b','o','t'}
6.5.2 集合的基本操作
①添加元素
s.add(x)将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
>>>{'Taobao', 'Facebook', 'Google', 'Runoob'}
s.update( x ) 可以添加元素,且参数可以是列表,元组,字典等
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'}
②移除元素
s.remove( x ) 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
>>> {'Google', 'Runoob'}
thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
s.discard( x ) 移除集合中的元素,且如果元素不存在,不会发生错误
thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
print(thisset)
>>> {'Taobao', 'Google', 'Runoob'}
s.pop() 也可以设置随机删除集合中的一个元素
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
③计算集合元素个数
len(s)
thisset = set(("Google", "Runoob", "Taobao"))
len(thisset)
>>> 3
④清空集合
s.clear()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.clear()
print(thisset)
set()
⑤判断元素是否在集合中存在
x in s
thisset = set(("Google", "Runoob", "Taobao"))
"Runoob" in thisset
>>> True
"Facebook" in thisset
>>> False
6.5.2 集合运算
s&t 交集,返回一个新集合,包括同时在集合s和t中的元素
s|t 并集,返回一个新集合,包括s和t里所有的元素
s-t 差集,返回一个新集合,包含集合s中但不在集合t中的元素
s^t 补集,返回一个新集合,包括集合s和t里的元素,但不包括同时在集合s和t里的元素
TEST
①创建一个学生选课字典,字典记录两名学生选课信息,学生姓名为键,选择的课程用列表表示,创建完成后输出每个学生姓名及选课信息
student_class_dict={'Wangming':['math','art'],'Luhong':['biology','geography','music'] }
print(student_class_dict)
for key,value in student_class_dict.items():
print("学生姓名为:"+key+",选择的课程为:"+str(value))
②编写程序,实现删除列表重复元素的功能
arr=[]
length=int(input("请输入列表的长度:"))
i=0
while i<length:
element=input("请输入第%d个元素"%(i+1))
arr.append(element)
i+=1
newlist=set(arr)
print(newlist)
③输入一段字符串,并统计每个字母出现的次数,按照{‘a’:3,’b’:8}的形式输出
arr = []
myStr = input("请输入只包含字母的字符串:")
newStr = myStr.lower()
for string in newStr:
arr.append(string)
a = {}
for i in arr:
if arr.count(i) >= 1:
a[i] = arr.count(i)
print(a)
第七章 函数
7.1 函数的定义和使用
7.1.1 函数的定义
函数的一般形式为:
def 函数名([形式参数列表]):
函数体
使用def关键字定义函数,函数名可以是任意有效的python标识符,函数名后的()里边放的是形参,形参是调用该函数是传递给他的值,可以是0个或者多个,以”,”分隔
- 即使该函数不接受任何参数,也必须保留一对空的圆括弧
- 括号后面的冒号不能省略
7.1.2 函数的调用
- 定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
- 这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
- 如下实例调用了 printme() 函数:
# 定义函数 def printme( str ):
# 打印任何传入的字符串 print (str) return # 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
7.1.3 函数的返回值
函数并非总是直接输出数据,他可以处理数据,并返回一个或这一组值,称之为返回值,使用return进行返回
7.2 函数的参数
7.2.1 实参和形参
定义函数时,圆括号内的是形参,调用函数时向其传递实参
参数的类型可分为:固定数据类型(整数、浮点数、字符串、元组)、可变数据类型(列表、字典、集合),当参数类型为固定数据类型时,在函数内部直接修改形参的值。不会影响实参!
7.2.2 参数类型
在python中,有多种参数类型,包括位置参数、默认值参数、关键字参数、不定长参数
①必需(位置)参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
②关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
③默认参数
调用函数时,如果没有传递参数,则会使用默认参数。
④定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数