Python兴趣之旅-第四期

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python兴趣之旅一--Ron(郝永涛)0102列表、元组及字典的遍历Contents目录python集合类型及内置方法03字典与列表的区别04Python推导式05案例分解一.python集合类型及内置方法数字(Numbers):分为int(整型)、long(长整型)、float(浮点型)和complex(复数)字符串(String):由字母、数字或下划线组成的一串字符列表(List):用[]标识,有序,使用最频繁的数据类型;如l=[1,2,'aa',[1,2,'aa']]元组(Tuple):类似list,有序,用()标识,不能二次赋值,相当于只读列表;如t=(1,2,3,4,'aa’)字典(Dictionary):用{}标识,无序,以键值对进行存储,通过键进行查找;如d={‘a’:‘b’,‘c’:‘d’}一.python集合类型及内置方法数据类型转换:int(x):将x转换为一个整数;float(x):将x转换到一个浮点数;配合算术运算符进行算术运算:+、-、*、/、%等;配置数学函数进行数学运算:abs(x):返回x的绝对值,如abs(-10),返回10floor(x):对数字进行向下取整,如floor(4.9),返回4round(x):对数字进行四舍五入,如round(4.9),返回5ceil(x):对数字进行向上取整,如ceil(4.1),返回5一.python集合类型及内置方法str.isdigit():如果字符串只包含数字则返回True否则返回Falsestr.islower():字符都是小写,则返回True,否则返回Falsestr.isupper():字符都是大写,则返回True,否则返回Falsestr.lower():转换字符串中所有大写字符为小写str.upper():转换字符串中的小写字母为大写str.replace(old,new):将字符串中的old值替换成new值str.join(seq):将seq中所有的元素(的字符串表示)合并为一个新的字符串str.count(str):返回str在string里面出现的次数一.python集合类型及内置方法list.append():追加成员list.count(x):计算列表中参数x出现的次数list.extend(L):向列表中追加另一个列表Llist.remove(x):删除列表中的元素xlist.reverse():将列表中成员的顺序颠倒list.sort():将列表中成员排序list.pop():移除列表中的一个元素,默认最后一个list.copy():复制列表一.python集合类型及内置方法因为元组不可改变的特性,所以它仅能被一些公用的内置函数操作:如、len(tuple):计算元组元素个数、max(tuple):返回元组中元素最大值、min(tuple):返回元组中元素最小值等它和列表非常相似(索引、切片、运算符操作、遍历等)一.python集合类型及内置方法adict.keys():返回一个包含字典所有KEY的列表adict.values():返回一个包含字典所有value的列表adict.items():返回一个包含所有(键,值)元祖的列表adict.copy():返回一个字典浅拷贝的副本adict.get(key,default=None):返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)二.列表、元组和字典的遍历列表的遍历:l=[1,3,5,7,9]foriinl:print(i)元组的遍历:t=(2,4,6,8,10)foriint:print(i)字典的遍历:d={'a':'a','b':'b'}forkey,valind.itmes:print('key:'+str(key)+'val:'+str(val))三.字典与列表的区别*两者都是可变容器,能完成元素的增、删、改、查;.List是有序的,Dictionary是无序的;.List通过索引访问,Dictionary通过key访问;.List元素可以重复,Dictionary元素无重复;.List可以使用切片,Dictionary不使用切片;.Dictionary占用内存比List在,会在1.5倍左右;*Dictionary内部存放的顺序和key放入的顺序是没有关系的,和list比较:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多;而list正好相反;所以,dict是用空间来换取时间的一种方法四.Python的推导式1.列表推导式;l=[iforiinrange(1,9)]2.字典推导式;d={str(i):iforiinrange(1,9)}3.列表推导式案例(用一行代码打印九九乘法口诀):print('\n'.join([''.join([str(y)+'*'+str(x)+'='+str(x*y)foryinrange(1,x+1)])forxinrange(1,10)]))四.Python的推导式综合案例:案例:录入三个学生成绩信息,并完成按成绩从低到高的顺序输出学生信息和根据学号查询学生信息!(为了更好地理解面向对象编程,我们用类的方式完成)解决思路:1.创建一个学生类,包括四个对象属性(schoolNum-学号、name-姓名、sex-性别、score-成绩),通过构造方法给三个对象属性赋值;2.创建一个类属性(列表)studentsList,用于保存学生信息;3.创建一个类属性(字典)studentsDict,用于查找学生信息,以学号为键,学生信息为值;4.利用类的内置方法__repr__,打印学生信息;5.创建一个方法studentsAdd(obj),将学生信息保存在列表;6.创建一个方法studentsIndex,创建学生索引信息,用于根据学号查询;7.创建一个方法scoreSort(),完成学生成绩的排序;8.创建一个方法scorePrint(),完成学生成绩的打印;四.Python的推导式第一步:创建学生类Student,类属性studentDict和studentsList,构造方法并初始化对象属性的值。classStudent(object):studentDict={}studentsList=[]#构造方法:初始化学生信息def__init__(self,schoolNum,name,sex,score):self.schoolNum=schoolNumself.name=nameself.sex=sexself.score=score四.Python的推导式第二步:创建输入对象的方法__repr__。#打印方法def__repr__(self):return'schoolNum:'+str(self.schoolNum)+'name:'+self.name+'sex:'+self.sex+'score:'+str(self.score)四.Python的推导式第三步:创建保存学生信息的静态方法。#保存学生信息@staticmethoddefstudentsAdd(obj):ifobjandisinstance(obj,Student):Student.studentsList.append(obj)else:print('Studentsobjecterror!')四.Python的推导式第四步:利用字典推导式创建学生信息索引。#创建学生信息索引@staticmethoddefstudentsIndex():ifStudent.studentsList:Student.studentDict={student.schoolNum:studentforstudentinStudent.studentsList}else:print('Nostudents!')四.Python的推导式第五步:创建查询学生信息的方法。#根据学号查询学生信息@staticmethoddefqueryStudent(schoolNum):ifStudent.studentDictandschoolNuminStudent.studentDict.keys():print(Student.studentDict[schoolNum])else:print('schoolNumerror!')四.Python的推导式第六步:创建学生成绩排序的方法。#将学生信息按成绩进行排序@staticmethoddefscoreSort():ifStudent.studentsList:Student.studentsList.sort(key=lambdaobj:obj.score,reverse=False)else:print('Nostudents!')四.Python的推导式第七步:创建打印所有学生信息的方法。#打印学生信息@staticmethoddefscorePrint():ifStudent.studentsList:forstudentinStudent.studentsList:print(student)else:print('Nostudents!')四.Python的推导式第八步:实例化学生信息,并完成操作。#实例化三个学生信息,并添加到学生信息列表中s1=Student(10001,‘biaobiao’,‘男’,10)s2=Student(10002,‘jingjing’,‘女’,99)s3=Student(10003,‘tingting’,‘女’,95)Student.studentsAdd(s1)Student.studentsAdd(s2)Student.studentsAdd(s3)Student.studentsIndex()#查询学号为10001的学生Student.queryStudent(10001)#输出所有学生信息Student.scorePrint()五.案例分解*兴趣之旅-基础部分,会以此feed的分解完成而结束。由于feed牵涉的内容较多,会在每次分享的时候分解一部分!生成jollychiccriteofeed的数据,具体业务需求如下:1.生成所有jollychic站点下的阿语和印尼的商品数据(即site_id=0),不区分sku2.将商品数据以语种区分,根据既定的商品数据结构,分别存入相关的csv文件中3.需要排除掉某些分类需要解决问题:1.如何获取商品数据?2.如何获取需要的商品信息?3.如何动态生成数据文件?

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功