python学习笔记

合集下载

python教程/学习笔记

python教程/学习笔记

无论什么情况下,使用UTF-8 才是王道! 1 # -*- coding:utf-8 -*2 2.2.5. 导入 通常应该在单独行中使用导入。 例如:No: import sys, os Yes: import sys import os 但是这样也是可以的: from types import StringType, ListType imports 应该放在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。 Imports 也是有顺序的:1)Python 标准库的import;2)第三方库的import;3)自定义的库的import; 并且在每组的import 之间使用一行空行分割。 2.2.6.以下地方不推荐出现空格: 1) 紧挨着圆括号,方括号和花括号的 如:"spam( ham[ 1 ], { eggs: 2 } )".写成"spam(ham[1], {eggs: 2})". 2) 紧贴在逗号,分号或冒号前的 如: "if x == 4 : print x , y ; x , y = y , x". 写成"if x == 4: print x, y; x, y = y, x". 3) 紧贴着函数调用的参数列表前开式括号的 如: "dict ['key'] = list [index]". 写成"dict['key'] = list[index]". 4) 紧贴在索引或切片下标开始的开式括号前 如: "dict ['key'] = list [index]".写成"dict['key'] = list[index]". 5) 在赋值(或其它)运算符周围的用于和其它并排的一个以上的空格,如: 1x=1 2y=2 3 long_variable = 3 写成 1x=1 2y=2 3 long_variable = 3 6)始终在这些二元运算符两边放置一个空格:赋值(=), 比较(==, <, >, !=, <>, <=,>=, in, not in, is, isnot), 布尔运算(and, or, not). 按 你的看法在算术运算符周围插入空格. 始终保持二元运算符两边空格的一致.一些例子: 1 i = i+1 2 submitted = submitted + 1 3 x = x*2 - 1 4 ypot2 = x*x + y*y

千锋教育 宋宋 python基础笔记

千锋教育 宋宋 python基础笔记

【主题】千锋教育宋宋 Python基础笔记近年来,随着人工智能技术的发展和应用,编程语言 Python 也逐渐成为了热门话题。

作为一种易学易用且功能强大的编程语言,Python 在各行各业都有着广泛的应用。

为了系统地学习Python编程,我选择了千锋教育的宋宋老师的Python基础课程,并从中整理出了以下笔记,以供大家参考。

一、Python基础概述1.1 Python简介Python是一种高级编程语言,具有简洁、清晰和易读的特点。

它被广泛应用于数据科学、人工智能、网络开发等领域。

1.2 Python的特点Python具有简单易学、开源免费、跨评台、强大的标准库等特点,因此备受程序员的喜爱。

1.3 宋宋老师的教学风格宋宋老师以通俗易懂的语言进行讲解,深入浅出地介绍Python编程的基础知识,让学习者能够轻松理解和掌握。

二、Python基础语法2.1 变量与数据类型Python中的变量不需要事先声明,直接赋值即可创建,而且可以灵活地改变数据类型。

2.2 控制流程Python中的控制流程包括顺序结构、分支结构和循环结构,通过这些结构可以灵活控制程序的执行流程。

2.3 函数与模块函数是Python中的重要概念,通过函数可以封装可重复使用的代码。

而模块则是一个包含Python定义和语句的文件,用来组织代码。

三、Python基础应用3.1 文件操作Python可以轻松地进行文件的读写操作,包括文本文件和二进制文件。

3.2 异常处理Python中的异常处理能够帮助程序更加健壮地运行,避免因错误而导致程序崩溃。

3.3 数据结构Python中有多种数据结构,如列表、元组、字典和集合,能够满足不同场景下的数据存储和处理需求。

四、个人观点与总结通过学习千锋教育宋宋老师的Python基础课程,我对Python编程语言有了更深入的了解和掌握。

宋宋老师的教学风格深受我喜爱,他的讲解通俗易懂,让我快速掌握了Python编程的基础知识。

黑马程序员 python 笔记

黑马程序员 python 笔记

文章标题:解锁Python编程技能:成为黑马程序员的必备笔记第一部分:引言1.1 什么是Python编程Python编程语言是一种高级、通用、解释型编程语言。

它在机器学习、人工智能、数据分析等领域有着广泛的应用,被誉为是学习编程的最佳入门语言之一。

对于想要成为优秀程序员或者黑马程序员的人来说,掌握Python编程技能至关重要。

第二部分:入门篇2.1 Python基础语法在学习Python编程之前,了解Python的基础语法是必不可少的。

Python的变量、数据类型、条件语句、循环等。

只有掌握了这些基础知识,才能够更好地理解和应用Python编程。

2.2 Python函数和模块函数和模块是Python编程中非常重要的概念。

函数可以让代码更加模块化和可复用,而模块则可以让代码更加清晰和可维护。

通过学习函数和模块的知识,可以使我们的Python代码更加高效和灵活。

2.3 Python面向对象编程面向对象编程是一种重要的编程范式,而Python是一种面向对象的编程语言。

掌握面向对象编程的知识,可以让我们更好地组织和管理代码,提高代码复用性和可维护性。

第三部分:进阶篇3.1 Python文件操作在实际开发中,文件操作是无法回避的部分。

学习如何使用Python 进行文件读写操作,可以让我们更好地处理数据和文件,实现更丰富的应用场景。

3.2 Python异常处理异常是编程中一种常见的情况,学习如何处理异常可以让我们的代码更加健壮和可靠。

Python提供了丰富的异常处理机制,学习这些知识可以让我们更好地处理各种异常情况。

3.3 Python常用库和框架Python拥有丰富的第三方库和框架,如NumPy、Pandas、Django等。

学习这些常用库和框架,可以让我们更好地开发各种应用,提高开发效率和质量。

第四部分:个人观点和总结4.1 个人观点作为一名编程人员,我深刻理解Python编程技能在今天的重要性。

Python的简洁易读的语法、丰富强大的库和框架、广泛的应用场景,使其成为成为黑马程序员不可或缺的技能之一。

python程序设计基础笔记

python程序设计基础笔记

python程序设计基础笔记摘要:一、Python 程序设计概述- Python 简介- Python 程序设计基础二、Python 语法基础- 变量与数据类型- 运算符与表达式- 流程控制语句三、函数与模块- 函数定义与调用- 模块导入与使用- 标准库模块介绍四、数据结构- 列表- 元组- 集合- 字典五、文件操作与异常处理- 文件打开与关闭- 文件读写操作- 异常处理六、Python 编程实践- 实例分析- 项目实战正文:Python 程序设计基础笔记Python 是一种高级、易于学习的编程语言,以其简洁的语法和强大的功能而著称。

Python 被广泛应用于各种领域,如Web 开发、数据分析、人工智能等。

本篇笔记将概述Python 程序设计基础,并介绍Python 语法基础、函数与模块、数据结构、文件操作与异常处理等知识点。

一、Python 程序设计概述Python 由Guido van Rossum 于1989 年创立,1991 年首次发布。

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python 具有丰富的标准库,使得开发者能够轻松地完成各种任务。

Python 程序设计基础包括变量与数据类型、运算符与表达式、流程控制语句等方面。

二、Python 语法基础1.变量与数据类型变量是存储数据的容器,数据类型决定了变量可以存储的数据种类。

Python 支持多种数据类型,如整数(int)、浮点数(float)、布尔值(bool)、字符串(str)等。

2.运算符与表达式运算符用于表示运算关系,如加法(+)、减法(-)、乘法(*)、除法(/)等。

表达式是由运算符和操作数组成的,用于计算结果。

3.流程控制语句流程控制语句用于控制程序的执行流程,包括条件语句(如if-elif-else)、循环语句(如for 循环和while 循环)等。

三、函数与模块1.函数定义与调用函数是一段组织好的、可重复使用的代码,用于执行特定任务。

(完整版)Python基础学习笔记

(完整版)Python基础学习笔记

Python 基础学习笔记基于《Python语言程序设计基础(第2版)》第一部分初识Python语言第1章程序设计基本方法1.1 计算机的概念•计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。

•计算机技术发展阶段:1. 第一阶段:1946-1981年,“计算机系统结构阶段”。

2. 第二阶段:1982-2007年,“计算机网络和视窗阶段”。

3. 第三阶段:2008年至今,“复杂信息系统阶段”。

4. 第四阶段:月20年后某个时期开始,“人工智能阶段”。

1.2程序设计语言1.2.1程序设计语言概述•机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。

不同计算机结构的机器指令不同。

•汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。

不同计算机结构的汇编指令不同。

机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称“低级语言”。

•高级语言:用更接近自然语言的方式描述计算问题。

代码只与编程语言有关,与计算机结构无关。

1.2.2编译和解释高级语言按执行方式可分为采用编译执行的静态语言和采用解释执行的脚本语言。

•编译是将源代码转换成目标代码的过程。

•解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。

1.2.3计算机编程•我学习Python的原因:1. 通过编程实现自动化,提高效率。

2. 通过编程了解一个新的广阔世界。

•学习一门编程语言(重点在于练习)1. 掌握该语言的语法2. 结合问题设计程序结构3. 掌握解决问题的能力1.3Python语言概述1.3.1 Python语言的发展Python语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。

•Python语言诞生于1990年,创世人为Guido。

•2000年10月,Python 2.0正式发布,2010年,Python 2.x系列发布最后一版(2.7)。

•2008年12月,Python 3.0正式发布,解释器内部采用完全面向对象的方式实现,代价是3.x系列版本无法向下兼容2.x系列的既有语法。

《python深度学习》笔记---4.4、过拟合与欠拟合(解决过拟合常见方法)

《python深度学习》笔记---4.4、过拟合与欠拟合(解决过拟合常见方法)

《python深度学习》笔记---4.4、过拟合与⽋拟合(解决过拟合常见⽅法)《python深度学习》笔记---4.4、过拟合与⽋拟合(解决过拟合常见⽅法)⼀、总结⼀句话总结:> 减⼩⽹络⼤⼩> 添加权重正则化> 添加 dropout 正则化1、机器学习的根本问题?> 优化和泛化之间的对⽴:机器学习的根本问题是优化和泛化之间的对⽴。

2、机器学习的根本问题是优化和泛化之间的对⽴:优化和泛化分别指什么?> 训练数据最佳性能:优化(optimization)是指调节模型以在训练数据上得到最佳性能(即机器学习中的学习)> 测试数据性能好坏:泛化(generalization)是指训练好的模型在前所未见的数据上的性能好坏。

3、训练开始时,优化和泛化是相关的?> 训练和测试数据损失都⼩:训练数据上的损失越⼩,测试数据上的损失也越⼩。

这时的模型是⽋拟合(underfit)的,即仍有改进的空间,⽹络还没有对训练数据中所有相关模式建模。

4、解决过拟合的最好⽅法?> 获取更多数据:为了防⽌模型从训练数据中学到错误或⽆关紧要的模式,最优解决⽅法是获取更多的训练数据。

模型的训练数据越多,泛化能⼒⾃然也越好。

> 【调节模型允许存储的信息量、对模型允许存储的信息加以约束】:如果⽆法获取更多数据,次优解决⽅法是调节模型允许存储的信息量,或对模型允许存储的信息加以约束。

> 迫使模型学习最重要的模式:如果⼀个⽹络只能记住⼏个模式,那么优化过程会迫使模型集中学习最重要的模式,这样更可能得到良好的泛化。

这种降低过拟合的⽅法叫作正则化(regularization)5、防⽌过拟合的最简单的⽅法就是减⼩模型⼤⼩?> 减少模型中可学习参数的个数:防⽌过拟合的最简单的⽅法就是减⼩模型⼤⼩,即减少模型中可学习参数的个数(这由层数和每层的单元个数决定)。

6、⽹络模型的容量?> 模型中可学习参数的个数:在深度学习中,模型中可学习参数的个数通常被称为模型的容量(capacity)。

全网最详细的Python学习笔记,值得收藏

全网最详细的Python学习笔记,值得收藏

全⽹最详细的Python学习笔记,值得收藏我总结了python已下点:⾯向对象类和对象的创建属相相关⽅法相关元类内置的特殊属性内置的特殊⽅法PS注意:不管你是为了Python就业还是兴趣爱好,记住:项⽬开发经验永远是核⼼,如果你缺新项⽬练习或者没有python精讲教程,可以去⼩编的Python交流.裙:七⾐⾐九七七巴⽽五(数字的谐⾳)转换下可以找到了,⾥⾯很多新教程项⽬,还可以跟⽼司机交流讨教!类和对象的创建类# 经典类没有继承 object的类# 新式类继承了 object的类class Money: # 2.x中默认是经典类,3.x中是新式类passclass Money(object): # 兼容的⼀种写法pass# Money既是类的__name__属性名,⼜是⼀个引⽤该类的变量print(Money.__name__) # Moneyxxx = Moneyprint(xxx.__name__) # Money对象one = Money()print(one) # <__main__.Money object at 0x000001555E9534A8>print(one.__class__) # <class '__main__.Money'>属性相关对象属性class Person:passp = Person()# 给 p对象增加属性, 所有的属性好像是以字典的形式组织的p.age = 18print(p.age) # 18print(p.__dict__) # {'age': 18}print(p.sex) # AttributeError: 'Person' object has no attribute 'sex'# 删除p对象的属性del p.ageprint(p.age) # AttributeError: 'Person' object has no attribute 'age'类属性num = 666count = 1type = "rmb"print(Money.num) # 666# 对象查找属性,先到对象⾃⾝去找,若未找到,根据 __class__找到对应的类,然后去类中查找one = Money()print(one.count) # 1# 不能通过对象去修改/删除对应类的属性one.num = 555print(Money.num) # 666print(one.num) # 555# 类属性会被各个对象共享two = Money()print(one.num, two.num) # 666 666Money.num = 555print(one.num, two.num) # 555 555限制对象的属性添加# 类中的 __slots__属性定义了对象可以添加的所有属性class Person:__slots__ = ["age"] # 只允许添加⼀个 age属性p1 = Person()p1.age = 1p1.num = 2 # AttributeError: 'Person' object has no attribute 'num'私有化属性Python没有真正的私有化⽀持,只能⽤给变量添加下划线来实现伪私有;通过名字重整机制属性的访问范围:类的内部-->⼦类内部-->模块内的其他位置-->其他模块公有属性 x[x] 类的内部[x] ⼦类内部[x] 模块内的其他位置[x] ⼦类内部受保护属性 _x[x] 类的内部[x] ⼦类内部[x] 模块内的其他位置(但不推荐)[x] ⼦类内部(from ... import xxx 不可以访问,要指明all变量)私有属性 __x[x] 类的内部[ ] ⼦类内部[ ] 模块内的其他位置[ ] ⼦类内部(同_x)保护数据案例class Person:def __init__(self):self.__age = 18def set_age(self, age): # 错误数据的过滤if isinstance(age, int) and 0 < age < 150:self.__age = ageelse:print("Wrong age value")return self.__agep = Person()print(p.get_age()) # 18p.set_age(22)print(p.get_age()) # 22只读属性# 1. 属性私有化 + 属性化 get()⽅法class Person(object):def __init__(self):self.__age = 18# 可以以使⽤属性的⽅式来使⽤⽅法@propertydef age(self):return self.__agep = Person()print(p.age) # 18p.age = 666 # Attribute Error: can't set attribute# 2. 通过底层的⼀些函数class Person:# 通过属性 = 值的⽅式来给⼀个对象增加属性时,底层都会调⽤这个⽅法,构成键值对,存储在 __dict__字典中 # 可以考虑重写底层的这个函数,达到只读属性的⽬的def __setattr__(self, key, value):if key == "age" and key in __dict__:print("read only attribute")else:self.__dict__[key] = value⽅法相关⽅法的划分实例⽅法类⽅法静态⽅法class Person:def instance_fun(self): # self: 调⽤对象的本⾝,调⽤时不⽤写,解释器会传参print("instance method", self)@classmethoddef class_fun(cls): # cls: 类本⾝print("class method", cls)@staticmethoddef static_fun():print("static method")所有的⽅法都存储在类中,实例中不存储⽅法类⽅法和静态⽅法⽆法访问实例属性⽅法的私有化和变量的私有化思想差不多class Person:__age = 18def __run(self): # 只能在该类中被调⽤print("running...")创建类对象的类(类也是⼀个对象)a, s = 8, "123"print(a.__class__, s.__class__) # <class 'int'> <class 'str'>print(int.__class__, str.__class__) # <class 'type'> <class 'type'>type是元类。

python学习笔记(循环,print的几种写法,操作符)

python学习笔记(循环,print的几种写法,操作符)

python学习笔记(循环,print的⼏种写法,操作符)⼀、循环( for, while)while循环是指在给定的条件成⽴时(true),执⾏循环体,否则退出循环。

for循环是指重复执⾏语句。

break 在需要时终⽌for /while循环continue 跳过位于其后的语句,结束本次循环,开始下⼀轮循环。

1. for 循环(for ... else...)⽤来遍历某⼀对象,还具有⼀个附带的可选的else块。

for语句的格式如下:for <> in <对象集合>:if <条件>:breakif <条件>:continue<其他语句>else:<>注:下例中输⼊的值要⽤int 强制转换成数字才能和随机数对⽐,没转换前是str类型2. for 的另⼀种⾼级写法:列表推导式--轻量级循环列表推导式是利⽤其他列表创建新列表的⼀种⽅法,⼯作⽅式类似于for循环:3. while循环(while ... else ...)在Python中while循环⽤于循环执⾏程序,即在某些条件下,循环执⾏某段程序。

基本形式如下:while 判断条件:执⾏语句执⾏的语句可以是单个语句或语句块,执⾏的判断条件可以是任何表达式,任何⾮0或⾮空的值均为true。

当判断条件为假false时,循环结束。

⽤while 实现上⾯的for 循环,如下所⽰,count 需要初始化值,并且每次count都需要+1, 否则就会恒为1,进⼊死循环。

⼆、print 的⼏种写法以下是print 的⼏种写法:%s string%d int%.2f float三、操作符(算数操作符,⽐较操作符,逻辑操作符)算数操作符:+加-减* 乘/ 除// 浮点除法(四舍五⼊)% 取余** 乘⽅# count = count+1# count+=1# count = count-1# count-=1# count= count*1# count*=1# count = count/2# count/=2⽐较操作符:python的标准⽐较操作符有:< <= > >= == != <>,根据表达式的真假,返回True/False布尔值数据类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级编程语言的分类:编译型(C,C++等):source code ——compiler——object code——executor——output解释型(basic,Python等):source code——interpreter——outputPython是现代编程语言:面向对象;支持泛型设计;支持函数式编程;∙对象和对象类型∙Python中所有类型都是以对象的形式存在五种基本对象类型:字符串 str整数 int浮点数 float布尔数 bool复数 complextype函数查看对象类型;Python中除了十进制数,其他进制的数只有字符串类型;浮点数有精度损失,因此要区分整数和浮点数;∙Python内置了类型转换函数:int() 函数可将二进制、八进制、十六进制转换成十进制的整型;int('1111',2) chr() 函数将整型转换为字符;#Python没有char类型ord() 将字符转换为整型;hex() 将十进制转换为十六进制;oct() 将十进制转换为八进制;bin() 将十进制转换为二进制;∙运算符与表达式算术运算符% 求余** 指数运算/ 向下取整数;如有一个数为浮点数,则结果为浮点数;若是两个整数相除,则结果还是取整数;自动类型转换若参与运算的两对象类型相同,则结果类型不变;若类型不同,按以下规则进行自动类型转换:bool ——> int ——> float ——> complexmath模块import math #引入模块dir(math) #查看模块函数help(math.sin) #查看模块中函数的帮助关系运算符== 表示等于!= 或 <> 表示不等于【关系运算符返回True or False】逻辑运算符and, or, not【逻辑运算符返回满足条件的结果】12 and 45返回12,12 or 45返回45运算符优先级括号()一元运算(正负) + -幂次 **算术运算 * / % //算术运算(加减) + -比较运算 == != <> <= >=逻辑非 not逻辑与 and逻辑或 or赋值运算 = *= /= += -= %= //=变量标识符(Identifier):变量、函数、模块等的名字变量的赋值:赋值运算符、增量赋值运算符如+=标准(键盘)输入:raw_input([prompt]) 读取键盘输入,将所有输入作为字符串看待;示例:radius = float(raw_input('Radius:'))标准(控制台)输出:print object or variable将多个对象输出到一行示例:print 'The area for the circle of radius', radius, 'is', area将一个字符串输出到多行:print 'Hello\nWorld!'常用转义字符\n 回车\t 制表符tab\\ 一个\\a 响铃bell\' 单引号’∙程序控制结构1 - 选择结构if 条件1:if 条件2:缩进的执行语句1else:缩进的执行语句2else:执行语句3∙多分支结构if 条件1:语句1elif 条件2:语句2else:语句3∙程序控制结构2 - while循环结构初始条件while 循环条件:缩进的循环体(包括条件改变语句)else:可选的循环体其他程序语句break 结束当前循环体;continue 结束当次循环;∙程序控制结构3 - for循环结构for anElement in object:缩进的循环体range函数range(start,stop[,step])format函数∙函数def 函数名(形参1,形参2=缺省值):"""说明文档,即注释"""语句,和说明文档一起称为函数体return 返回值(可选)∙o return将终止当前函数的执行,之后的语句将被忽略!o global和local变量,以global关键字声明∙递归函数程序调用自身:初始条件、递归部分嵌套层次深,函数调用开销大,重复计算比较多;但是程序比较简洁。

∙字符串字符串运算len()获得字符串长度;+字符串拼接*字符串重复in成员运算符,返回True或Falsefor枚举字符串的每个字符,如for var in 'hello'字符串索引[ ]从0(前向)开始或-1(后向)开始切片 [start : finish],其中finish是索引结束位置的下一个字符的索引值;计数参数 [start : finish : countBy]字符串是不可变的!字符串方法(对象的函数):如my_str.replace(old,new)函数可将字符串my_str中的old字符串替换为new 字符串;替换后需要通过重新赋值才能将原字符串修改为新的字符串。

find('var' ) 查找字符出现的位置;split(',') 切分字符串;文件操作:f = open(filename,mode)for line in f:line = line.strip()#去除字符串前后的空格、回车等字符print line.title()#首字母大写,其余字母小写f.close()f.write(str)字符串比较:ASCII编码:任何一个字符对应一个数字;故字符串的比较就是直接比较字符串对应的数字的大小;字符串格式化:str.format(para1,para2),在str用 {} 表示对应的位置如:print "Hello {} good {}.".format(5,'DAY'){fieldname:align width.precision type}"%s=%s" %(k, params[k])正则表达式:.表示任意字符\d+表示一系列数字[a-z]表示一个小写字母如:re.search('C.A','ABCDEDF')列表列表:内建的数据结构,用来存储一系列元素。

支持索引[ ]、切片、拼接+、重复*、成员in、长度len、循环for使用[ ]生成,元素间用逗号分隔;可以包含多种类型;列表的内容是可变的。

列表的方法:mylist.append(元素) :追加元素,区别于拼接(拼接不改变列表);mylist.extend(列表) :追加新的列表;mylist.insert(位置,内容) :插入元素;mylist.pop(下标,默认为最后) :删除元素并返回该元素,mylist.remove(元素内容) :删除元素sum(lst); max(lst); min(lst) ...list.index( 元素 ):查找,返回位置列表赋值a = [1,2,3,]b = a #b和a指向同一个列表;c = a[:] #生成了一个新的列表c;列表作为参数;列表的查找:list.index( )线性查找:最坏运行时间为 k0n+k1二分查找:(有序列表)时间复杂度O(n)、O(n^2)等列表的排序:内建函数sorted(lst), list.sort(),使用quicksort算法,比选择排序和冒泡排序要快。

选择排序:def selection_sort_v1(lst):for i in range(len(lst)):min_index = ifor j = range(i+1,len(lst))):if lst(j) < lst(min_index):min_index = jlst.insert(i, lst.pop(min_index))def selection_sort_v2(lst):for i in range(len(lst)):min_index = ifor j = range(i+1,len(lst))):if lst(j) < lst(min_index):min_index = jswap(lst,i,min_index)冒泡排序:def buble_sort(lst):top = len(lst)-1is_exchanged = Truewhile is_exchanged:is_changed = Falsefor i in range(top):if lst[i] > lst[i+1]:is_changed = Trueswap(lst,i,i+1)top -= 1嵌套列表:列表的解析(推导):[表达式 for 变量 in 列表 if 条件]eg. [i for i in range(1,x+1) if x%i==0]eg. students.sort(key = lamda x: x[1], reverse = True)匿名函数,列表嵌套,列表解析的应用∙元组Tuple即不可变的列表,故除了改变列表内容的方法外,其他方法均使用与元组;用逗号(也可加小括号)创建元组:如 a = 1, 'abc', 3, 4元组的赋值:a, b = b, aDSU模式(装饰、排序、反装饰):eg. 对单词按长度重新排列;∙字典key-value,对应着c++的map或Java的HashTable创建字典:使用{ },冒号指明键值对,逗号隔开不同元素:eg. my_dict = {'John':655879, 'Bob':266742}访问字典:用[ key ] 进行访问;字典运算符和方法:len(dict)返回键值对数目;key in my_dict判断key是否是字典中的键;for key in my_dict枚举字典的键my_dict.items()全部的键值对,以列表和元组的形式my_dict.keys()全部的键my_dict.values()全部的值my_dict.clear()清空字典示例:字母计数方案二:生成具有26个元素的列表,将每个字母利用ASCM转化为相应的索引值count = [0] * 26for i in 'abeopd':count[ord(i) - 97] += 1 # ord()返回字符的ASCM码方案三:生成一个字典,字母做键,对应出现的次数做值s = 'aoofgeoj'd = { }for i in s:if i in d:d[i] += 1else:d[i] = 1print d示例:统计文本中单词出现的频率f = open('test.txt')word_freq = {}#字典for line in f:words = line.strip( ).split( )for word in words:if word in word_freq:word.freq[word] += 1else:word.freq[word] = 1freq_word = [ ] #列表for word, freq in word_freq.items():freq_word.append(freq, word))freq_word.sort(reverse = True)for freq, word in freq_word[:10]:print wordf.close()集合无序不重复元素(键)集创建集合:x = set()x = {key1,key2,...}x.add()x.remove()列表元素的查找时间复杂度太高,所以用集合的形式;。

相关文档
最新文档