学Python,最高效的方法其实就是自学+自问+实战(海伦泰勒学习法的精简版)。

本文分为3大板块,不仅要帮你0基础入门,还专门写了进阶内容。

进阶内容中这51个Python的秘密,你可不一定知道。

并且免费课程处会带大家一起做实战项目,还有前BAT高级技术专家+名校硕博级讲师和助教团队进行答疑。 />

一、基础入门:用140+页把Python各种知识点图文化文字化,用大家都听得懂的话,彻底给讲明白。

1.Python的背景

2.Python应用场景

3.基础语法

4.对象

5.字符串

6.列表

7.元组

8.字典

9.三元表达式

10.条件判断

11.循环语句

12.循环控制

13.迭代器与生成器

14.异常

二、免费的Python课程。BAT高级技术专家教学,还配上了实战项目,有问题随时可以咨询。

光看不练,你用1年看100本书也没有效果的。 />

三、进阶:

等你略懂Python后,必须要看的51个Python的秘密。

GitHub上2万+星,收集了难以理解和反人类直觉的例子以及鲜为人知的功能特性。

入门部分

一、认识Python />

Python 是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

二、Python应用场景

1. Web应用开发

Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。

Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂的Web程序。

2. 操作系统管理、服务器运维的自动化脚本

在很多操作系统里,Python是标准的系统组件。大多数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。

有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。

Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。

通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。

使用IronPython,Python程序能够直接调用.Net Framework。一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。

3. 网络爬虫

Python有大量的HTTP请求处理库和HTML解析库,并且有成熟高效的爬虫框架Scrapy和分布式解决方案scrapy-redis,在爬虫的应用方面非常广泛。

4. 科学计算

NumPy、SciPy、Pandas、Matplotlib可以让Python程序员编写科学计算程序。

5. 桌面软件

PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。

6. 服务器软件(网络软件)

Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。

第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。

7. 游戏

很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。

相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。

8. 构思实现,产品早期原型和迭代

Google、NASA、Facebook都在内部大量地使用Python。

(长文预警,后续还有超万字,建议先双击屏幕点赞,省的以后找不到这个回答了,也可以直接在文末/评论区看领免费课的方式,直接实战+学习结合了)

三、Python基础知识

1. 语法基础:注释

在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。python 常用单行注释是 # ,常用多行注释是三对单引号 ''' '''

# 这是一个单行注释

# print("七月你好,我是八月.") 此行代码不执行显示.

# 快捷键: ctrl + / 快速设置注释 和 快速取消注释

'''

这是一个多行注释

该范围内的代码不会执行显示

'''

2. 语法基础:数据类型 />

3. 语法基础:关键字和标识符

关键字

python 一些具有特殊功能的标识符,这就是所谓的关键字。关键字,是 python 已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符

那么 python 中关键字都有哪些呢?

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

那么咱们如何去查询 python 中有哪些关键字呢?

# 在python中若想查询python中有哪些关键字可以先导入keyword模块

import keyword #导入关键字模块

print(keyword.kwlist) #查询所有关键字

实际操作 />温馨提示:咱们在起变量名或者文件名时不能使用这些关键字名字哟,否则会报错.抛出异常~请大家注意哟。

标识符

祖国的花朵(开发人员)在程序中自定义的一些符号和名称。标示符是咱们自己定义的,如变量名、函数名、类名等。

标识符规则

定义这些标识符也有一定的规则:标识符由字母下划线和数字组成,但是不能以数字开头,可以使用下划线或字母开头,注意在 python 中,标识符是严格区分大小写的哟。 变量 Andy 不等于 变量 andy 这是两个变量。

标识符命名规则

命名规则,可以简单的理解为,咱们在起名字的时候是需要遵守相关规则的.主要是为了让别人一看就明白是什么意思,做什么用的.可以提高代码可读性。比如:名字 就定义为 name , 定义学生用 student。

驼峰命名法

同时呢,在需要多个单词进行组合时,咱们使用驼峰命名法:

小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog

大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstName、LastName。不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf

名字和对象之间关系

我们可以用 = 等号,建立立定义的变量名字和对象之间的引用关系,也可以用使用 del 来解除这种引用关系。

# 举个例子

name = '天下第一帅' # 我将 天下第一帅 这个字符串赋值给了 name 这个变量名,可以理解为,下次我通过 name 名字可以联系到 天下第一帅 这个人.

实际操作 />

# del 解除引用关系

age = 17 # 永远17岁

del age # del 是 delete 的缩写,此行代码表示删除 age 和 17 之间的引用关系

print(age) # 因为已经删除引用关系,所以访问不到 17 这个数据,则抛出异常

实际操作 />

名字空间

当我们在定义了一些变量名,函数名,类名之后,会有一个空间来收纳这些名字和它们所对应的数据类型和数据内容。

# 举个栗子

height = '190CM' # 小编的理想身高.但是现实很残酷.

def func1():

pass

class Fun():

pass

实际操作 />

使用 %whos 查看名字空间,我们也可以使用 %reset 来清空这个空间,清空之后,我们就需要重新执行一次定义的过程,才能重新存储在名字空间内。

实际操作 />

4. 语法基础:输出

普通的输出 />

python中的输出

用 print() 在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出 '李铁柱',用代码实现如下:

name = '李铁柱'

print(name)

运行结果 />

print()也可以打印整数,或者计算结果

# 举个例子

print(300)

print(100 + 200)

实际操作 />

因此,我们可以把计算100 + 200 的结果打印得更漂亮一点:

print('100 + 200 = ', 100 + 200)

实际操作 />

注意,对于100 + 200,Python 解释器自动计算出结果 300,但是,'100 + 200 =' 是字符串而非数学公式,Python 把它视为字符串,直接进行打印输出。

5. 语法基础:格式化输出

格式化操作的目的,比如说有下列代码:

print('大家好,我叫 李铁柱,我今年 24 岁')

print('大家好,我叫 候德柱,我今年 25 岁')

print('大家好,我叫 候不柱,我今年 26 岁')

大家仔细观察一下,能够看到,我在 print 输出自我介绍的时候,用了很多的相同字体,就只有一些不同的字段,那么咱们能否简化一下程序呢?

age = 24

print("我今年%d岁" % age)

age += 25

print("我今年%d岁" % age)

age += 26

print("我今年%d岁" % age)

实际操作 />

在程序中,看到了 % 这样的操作符,这就是 Python 中格式化输出。

age = 18

name = "小岳岳"

print("我的姓名是%s, 年龄是%d" % (name, age))

运行结果 />

在这里咱们一次使用了两个格式化符号,分别是:%s 和 %d。

%s:表示格式化输出字符串

%d:表示格式化输出十进制整数

除了这两个格式化输出字符还有很多,往下看。

常用的格式化符号 />

6. 语法基础:输入

现在,你已经可以用 print() 输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python 提供了一个 input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

name = input() # input()

当你输入name = input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。

输入完成后,不会有任何提示,Python 交互式命令行又回到就绪状态了。那我们刚才输入的内容到哪去了?答案是存放到 name 变量里了。可以直接输入 name 查看变量内容: /> />

7. 语法基础:运算符

标准操作符

python 同大多数语言一样,也有自己的操作符,分别用来应对不同的工作内容。今天要讲的是 Python 中最常用的几种标准操作符:算术运算符、赋值运算符、比较运算符、逻辑运算符。

算数运算符 />

注意:混合运算时,优先级顺序为: ** 高于 * / % // 高于 + - ,为了避免歧义,建议使用 () 来处理运算符优先级。并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算。

实际操作

a = 10

b = 20

print(a+b)

print(a-b)

print(a*b)

print(a/b)

赋值运算符 />

实际操作

a = 10 # 单个赋值

b = 20

c,d,e = 30,40,50 # 多个赋值 c = 30 , d = 40 , e = 50

print(a,b,c,d,e)

复合赋值运算符 />

实际操作

c = 40

a = 20

# print(c += a) # 直接 print() 是无法输出结果的哟

c += a

print(c)

c -= a

print(c)

c *= a

print(c)

c /= a

print(c)

c %= a

print(c)

8.语法基础:常用的数据类型转换

数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。 />

类型转换

# 给小伙伴们举几个例子

# int(): 将数据转换为 int 类型

str1 = "10"

num1 = int(str1)

print(int)

# int() 处理浮点数,只留下整数部分,舍弃小数部分(并不是四舍五入操作)

num2 = int(3.74)

print(num2)

# float() 将数据转化为浮点数

str2 = "3.14"

f1 = float(str2)

print(type(f1))

# str() : 转换为 字符串类型

num1 = 10

f1 = 3.14

print(type(str(num1)))

# eval(): 将字符串形式的数据,转换为原本的类型

str1 = "3.14"

print(type(eval(str1)))

操作结果

四、对象

1.什么是对象在python中一切都是对象,每个对象都有三个属性分别是,(id)身份,就是在内存中的地址,类型(type),是int、字符、字典(dic)、列表(list)等,最后还有值。

例如: a = 12 就是用 12 这个类型为整数的,值为 12,在内存空间中创建了一个空间(这个空间会用一个地址来表示,就是 id ),当对象被创建后,如果该对象的值可以被更改,那么就称之为可变对象(mutable),如果值不可更改,就称之为不可变对象(inmutable)。

2.不可变对象不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。不可变对象:整数int、浮点数float、字符串str、元组tuple

举例说明:

a = 5

print(id(a))

a = 4

print(id(a)) # 重新赋值之后,内存地址发生改变

实际操作: />

由于是不可变对象,变量对应内存的值不允许被改变。当变量要改变时,实际上是把原来的值复制一份后再改变,开辟一个新的地址,变量 a 再指向这个新的地址(所以前后变量 a 的id不一样),原来变量 a 对应的值 5 因为不再有对象指向它,就会被垃圾回收。这对于 str 和float 类型也是一样的。

3.小整数池整数在程序中的使用非常广泛, python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间.

Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于 LEGB中 的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

# 举个栗子

a=-5

b=-5

a is b:True

a=1000

b=1000

a is b:False

实际操作: />

4.可变对象可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。可变对象:列表list、字典dict、集合set

举例说明

# 举个例子

list1 = [1,2,3,4]

print(list1)

print(id(list1)) # 打印 id 地址

list1[2] = 5 # 对列表进行改值操作

print(list1) # 打印改值之后的列表内容

print(id(list1)) # 打印改值之后的 id 地址

实际操作 />列表 list 在改变前后 id 并未发生改变,可变对象由于所指对象可以被修改,所以无需复制一份之后再改变,直接原地改变,所以不会开辟新的内存,改变前后 id 不变。

5.编码编码(encoding)就是把一个字符映射到计算机底层使用的二进制码。编码方案(encoding scheme)规定了字符串是如何编码的。

ASCII码:美国信息互换标准代码,是一种7位编码方案来表示所有的大写字母、小写字母、数字、标点符号和控制字符。 />

UNICODE万国码:Unicode 是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。

UTF-8码UTF-8 是以 8 位为单元对 Unicode 进行编码。UTF-8 包含全世界所有国家需要用到的字符,是国际编码,通用性强。

6.bytes与str使用 bytes 类型,实质上是告诉 Python ,不需要它帮你自动地完成编码和解码的工作,而是用户自己手动进行,并指定编码格式。Python 已经严格区分了 bytes 和 str 两种数据类型,你不能在需要 bytes 类型参数的时候使用 str 参数,反之亦然。

编码转换过程 />

7.数据类型 />

8.下标(索引)所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间 />

# 如果想取出部分字符,那么可以通过下标的方法,(注意 python 中下标从 0 开始)

name = 'abcdef'

print(name[0])

print(name[1])

print(name[2])

运行结果:

a

b

c

9.切片切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。切片的语法:[起始:结束:步长]

注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。

# 我们以字符串为例讲解。如果取出一部分,则可以在中括号[]中,使用:

name = 'abcdef'

print(name[0:3]) # 取 下标0~2 的字符

结果为:

abc

s = 'Hello World!'

print(s[4])

print(s)

print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:5]) # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)

print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

# python 字符串快速逆置

print(s[::-1]) # 从后向前,按步长为1进行取值

# 索引是通过下标取某一个元素

# 切片是通过下标取某一段元素

10.复制(拷贝)python 中有三种赋值方式,分别是:

赋值:=

浅拷贝:copy

深拷贝:deepcopy

赋值:在 Python中,等号 = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

所以说,Python 是动态语言,即变量不用指定数据类型。

实际操作: />

图片详解: />

实际操作:

l = [1, 2, 3, 4, [1, 2, 3] ] # 列表中有整数数据类型,也有列表数据类型

new_l = l 对 对象 l 的引用

copy_l = copy.copy(l) 对 对象 l 的浅拷贝

deepcopy_l = copy.deepcopy(l) 对 对象 l 的深拷贝使用 id 这个方法来查看对象的内存地址

l = [1, 2, 3, 4, [1, 2, 3] ] id(l) ---> 1631063137352

new_l = l id(new_l) ---> 1631063137352

copy_l = copy.copy(l) id(copy_l) ---> 1631063137416

deepcopy_l = copy.deepcopy(l) id(deepcopy_l) ---> E1631063026632可以看到,使用 copy 这个模块创建的浅拷贝和深拷贝在内存中都有一个新的内存空间。

进一步查看四个列表中不可变类型的id值:

l = [1, 2, 3, 4, [1, 2, 3] ] id(l[1]) ---> 1400022144

new_l = l id(new_l[1]) ---> 1400022144

copy_l = copy.copy(l) id(copy_l[1]) ---> 1400022144

deepcopy_l = copy.deepcopy(l) id(deepcopy_l[1]) ---> 1400022144再查看可变类型的id值:

列表[-1] : 表示最后一个这个列表中的元素

l = [1, 2, 3, 4, [1, 2, 3] ] id(l[-1]) ---> 1631063137544

new_l = l id(new_l[-1]) ---> 1631063137544

copy_l = copy.copy(l) id(copy_l[-1]) ---> 1631063137544

deepcopy_l = copy.deepcopy(l) id(deepcopy_l[-1]) --->1631063186312可以看到,浅拷贝是不会对 l 中的数据结构进行深层次的拷贝的。也就是说,我要是在 l 列表,更改了 l[-1][索引] 列表其中的一个值,那么 copy_l 中的最后一个元素中的值是会跟着改变的,因为他跟 l 引用的地址是同一个,而 deepcopy_l 的值是不会变的。

浅拷贝 copy:浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。

深拷贝 deepcopy:深拷贝是对于一个对象所有层次的拷贝(递归,相当于克隆了一下,产生了新的数据)。

浅拷贝对不可变类型和可变类型的 copy 不同

copy.copy对于可变类型(列表、字典),会进行浅拷贝。

copy.copy对于不可变类型(元祖、数字、字符串),不会拷贝,仅仅是指向。

基本上只要不是我们自已手动调用的 deepcopy 方法都是浅拷贝。

10.列表推导式所谓的列表推导式,就是指的轻量级循环创建列表

格式 : [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

实际操作: />

五、字符串

1.字符串的格式定义变量 num,存储的是数字类型的值

num = 22定义变量 name,存储的是字符串

name = 'hello july'

总结:双引号或者单引号里面的数据就是字符串

2.字符串输出举个栗子

name = '英雄联盟'

kind = '游戏'

address = '王者峡谷'

print('**************************************************')

print("姓名:%s" % name)

print("种类:%s" % kind)

print("公司地址:%s" % address)

print('**************************************************')

实际操作: />哈哈,接下来给你们看个好玩的~~. />

3.字符串输入咱们之前在学习 input 输入的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;

注意:input 获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

userName = input('请输入用户名:') # 命名规范 userName 简单易懂代表用户名字

print("用户名为:%s" % userName)

password = input('请输入密码:')

print("密码为:%s" % password)

实际操作: />

4.下标所谓 “下标”,就是编号,就好比身份证信息中的身份证号码,通过这个号码就能找到相应的人。 />

字符串中"下标"的使用列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。

如果有字符串:name = "http://JULYEDU.COM",在内存中的实际存储如下:

/>

如果你想取出字符串中的某个值,可以通过方括号 [下标索引] 来获取

name = "JULYEDU.COM"

name[0]

name[6]

实际操作: />

5.切片在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python 没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片的语法:[ 起始位置 : 结束位置 : 步长 ]

注意:选取的区间从 "起始" 位开始,到 "结束" 位的前一位结束(不包含结束位本身),步长表示选取间隔。

我们以字符串为例讲解。

如果取出一部分,则可以在中括号 [ ] 中,使用:

name = "JULYEDU.COM"

print(name[0:7]) # 取 下标0~7 的字符

运行结果: />更多使用方法:

name = "JULYEDU.COM"

print(name[0:7]) # 取 下标 0~7 的字

print(name[3:5]) # 取 下标 3~5 的字

print(name[3:]) # 取 下标为 3 开始一直到最后的字

print(name[1:-1]) # 取 下标为 1 开始到最后第 2 个之间的字符

print(name[1::2]) # 取 下标为 1 开始一直到最后的字,每两个切一个

运行结果: />

6.字符串常见操作假设咱们现在有个字符串 web = "http://www.julyedu.com",下面就是字符串的常见操作。

find()find : 翻译成中文是查找的意思

检测你需要查找的字符串是否包含在 web 中,如果是则返回开始的索引值,否则返回-1

web.find('july') # 返回下标 4

lower()lower : 翻译成中文是减弱、减小,也可以翻译为小写的

将字符串中,所有大写字符转换成小写字符

name = 'Wo Zui Shuai !'

name.lower() # 结果返回:'wo zui shuai !'

upper()upper : 翻译成中文是上面的、大写的。

将字符串中所有小写转换成大写

name = 'Wo Zui Shuai !'

name.upper() # 返回结果:'WO ZUI SHUAI !'

count()count : 翻译成中文是计算、计数的意思

返回 字符串 在 开始 和 结束 之间 在 web 里面出现的次数

web.count('w') # 返回结果 3 ,表示 w 在 web 值中出现 3 次

index()index : 翻译成中文是指标、指数、索引的意思

跟 find() 方法一样,只不过如果查找的字符串不在 web 中会报一个异常.匹配成功的话也是返回下标值

web.index('a') # 举一个匹配失败得例子 />

split()split : 翻译成中文是分离、分割的意思

以 str 为分隔符切片 web,如果 maxsplit 有指定值,则仅分隔 maxsplit 个子字符串

web.split('.',2) # split(以什么为切割点 ,切割几次)

运行结果: />

replace()replace : 翻译成中文是取代、代替、替换的意思

把 web 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

web.replace('w','W',2)

运行结果: />

title()title :翻译成中文是标题、冠军、头衔的意思

把字符串的每个单词首字母大写

web.title() # 返回 'Www.Julyedu.Com'

六、列表前面学习的字符串可以用来存储一串信息,那么想一想,如果现在有很多人,总不能每个人都起一个变量名把?那岂不得疯~ />咱们可以使用列表。

1.列表得格式和输出

name = ['杜子腾','史珍香','付书宝','刘币替']

输出列表:

print(name)

print(name[0])

print(name[1])

print(name[2])

运行结果: />

2.列表得循环遍历

使用 for 循环当列表中存储得数据比较多得时候,为了更有效率的输出列表的每个数据,可以使用循环来完成,

name = ['杜子腾','史珍香','付书宝']

for i in name:

print(i)

运行结果: />

使用 while 循环当然也可以使用 while 循环,但是要设置好 while 循环的条件哟,小心不要进入死循环

name = ['杜子腾','史珍香','付书宝']

length = len(name)

i = 0

while i

print(name[i])

i+=1

运行结果: />

3.列表得常见操作列表中存放的数据是可以进行修改的,比如"增"、"删"、"改"、"查",后续咱们还会讲可变对象和不可变对象。列表就是可变对象,请看后面得课程哟

增(append, extend, insert)

append通过 append 可以向列表中添加数据

namelist = ['杜子腾','史珍香','付书宝']

namelist.append('李铁柱')

print(namelist)

运行结果: />

extend通过 extend 可以将另一个集合中的元素逐一添加到列表中

namelist = ['杜子腾','史珍香','付书宝']

name_list = ['李铁柱','李树']

namelist.extend(name_list)

print(namelist)

运行结果: />

insertinsert(index, object) 在指定位置 index 前插入元素 object

namelist = ['杜子腾','史珍香','付书宝']

namelist.insert(1,'付舒宝')

print(namelist)

运行结果: />

删(del, pop, remove)

del根据下标进行删除

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

del movieName[0]

print(movieName)

运行结果: />

pop删除最后一个元素

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

movieName.pop()

print(movieName)

运行结果: />

remove根据元素的值进行删除

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

movieName.remove('骇客帝国')

print(movieName)

运行结果: />

改(通过下标)修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

movieName[0] = '三傻大闹宝莱坞'

print(movieName)

运行结果: />

查(in, not in)

in如果存在那么结果为true,否则为false

#待查找的列表

nameList = ['xiaoWang','xiaoZhang','xiaoHua']

#获取用户要查找的名字

findName = input('请输入要查找的姓名:')

#查找是否存在

if findName in nameList:

print('在字典中找到了相同的名字')

else:

print('没有找到')

运行结果: />

not in如果不存在那么结果为 true,否则false

#待查找的列表

nameList = ['xiaoWang','xiaoZhang','xiaoHua']

#获取用户要查找的名字

findName = input('请输入要查找的姓名:')

#查找是否存在

if findName not in nameList:

print('没有找到')

elif findName in nameList:

print('找到了')

运行结果: />not in : 翻译成大白话就是,如果 ....什么什么.... 不在 啥玩意 里面,那么就执行缩进段内的代码。

哈哈,这样一翻译,是不是很通俗易懂了。

七、元组Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

numTuple = (1,2,3,4)

print(numTuple) # 结果为:(1,2,3,4)

1.访问元组访问元组中的数据,也可以通过下标来访问元组

numTuple = (1,2,3,4)

print(numTuple[0]) # 结果为: 1

2.修改元组

numTuple = (1,2,3,4)

numTuple[0] = 5

抛出异常:

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in

1 numTuple = (1,2,3,4)

----> 2 numTuple[0] = 5

TypeError: 'tuple' object does not support item assignment

元组中的不可变对象是不能被修改的哟.如果里面是列表等可变数据类型的话,可以进行修改.

八、字典在这里咱们仔细想一下哟~,假设有个列表里面存储的是学生的名字。当学生的名字错误,需要修改的时候,可以通过 列表名[索引] 的方式来进行修改,但是如果列表的顺序发生了变化,此时呢就需要修改下标,才能完成名字的修改。

提出疑问:有没有什么方法,既能存储多个数据,还能在访问元素得时候很方便就能够定位到元素呢?

答案:当然是通过接下来要讲得 字典 啦~向下看咯

生活中的字典: />

软件开发中的字典:

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}说明字典和列表一样,也能够存储多个数据。

列表中找某个元素时,是根据下标进行的。

字典中找某个元素时,是根据 '名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'age'、'gender')

字典的每个元素由2部分组成,键:值。例如 'name':'AKing' ,'name'为键,'AKing'为值

1.根据键访问值

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

print(info['name'])

print(info['age'])

运行结果: />若访问的 键名 不存在则抛出异常。

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

print(info['height']) # 访问 info 字典中键名为"height"的值,但是...值呢?他没有值阿。

抛出异常:

--------------------------------------------

Traceback (most recent call last):

File "", line 1, in

KeyError: 'height'

2.修改元素字典的每个元素中的数据是可以修改的,只要通过 key 找到,即可修改

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

new_address = '上海'

info['address'] = new_address

print('修改之后的 address 为: %s' % info['address'])

运行结果: />

3.添加元素如果在使用 字典名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素。

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

# print('id为:%d'%info['id']) # 程序会中断运行,因为访问了不存在的键

id = 6948

info['id'] = id

print('添加之后的id为:%d' % info['id'])

运行结果: />

4.删除元素对字典进行删除操作,有一下几种:

del

clear()

del 删除指定得元素

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

print('删除前,%s' % info['name'])

del info['name'] # 删除之后,值也跟着删除

print('删除后,%s' % info['name'])

运行结果: />

del 删除整个字典

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

del info # del 字典名,这样的话字典的数据就全被删除了

print(info)

运行结果: />

clear 清空整个字典

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

print('清空前,%s' % info)

info.clear() # 字典名.clear() 清空字典中所有键值对数据

print('清空后,%s' % info)

运行结果: />

5.字典的常用方法

len()len : 代表长度 length 的意思

测量字典中,键值对的个数

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

len(info) # 结果为 4

keys()keys :翻译为 键。

返回一个包含字典所有 key 的列表

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

info.keys() # 结果返回列表,存储的都是键名

values()values :意思为复数的 value ,表示为多个值

返回一个包含字典所有 value 的列表

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

info.values() # 结果返回列表,存储的都是 values 值

items()items :表示为所有物品,是 item 的复数形式

返回一个包含所有(键,值)元祖的列表

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

info.items()

运行结果: />

6.字典的遍历通过 for ... in ... 我们可以遍历字符串、列表、元组、字典等

遍历字典的 key 键可以通过 for i in 字典名.keys(): 获取 键名

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

for i in info.keys():

print(i)

运行结果:

/>

遍历字典的 values 值可以通过 for i in 字典名.values(): 获取 值

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

for i in info.values():

print(i)

运行结果:

/>

遍历字典的 items 键值对可以通过 for item in 字典名.items(): 获取 键名和值

info = {'name':'AKing', 'age':25, 'gender':'man', 'address':'北京'}

for item in info.items():

print(item)

运行结果: />

九、三元表达式为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)

# 举个栗子

a = 1

b = 2

h = ""

h = a-b if a>b else a+b

print(h)

实际操作: />

执行过程: />

本部分逐步更新中,可以双击屏幕支持一下:)

进阶部分

如果你是小白,不用看进阶部分。可以收藏后继续学上面的教程,或者直接在文末领取免费课程。 />

一个解析51项堪称是“秘密”的Python特性项目,在GitHub上彻底火了。

英文原版已经拿到了近15000星,中文翻译版也获得了7500+星。

这段内容太长了,单独发了一篇文章。七月在线:Python的51个“秘密”被曝光 |GitHub超2万星​zhuanlan.zhihu.com

实战+学习的免费课程

原价199元的Python入门课程,限时免费!

没有任何要求,直接领取就可以! />

任何疑问,教师团队随时解答,课程还安排了实战项目。学+练才能高效掌握知识。

虽然是免费课,但教师团队可没有缩水,依旧是BAT高级专家配合顶级高校硕士进行教学。

立刻微信搜索公众号“七月在线实验室”

回复“Python”开始学习

每天更新干货,帮你踏入AI领域成为技术leader。

应届生学员转行拿到52万年薪,大量学员转行后拿到30-40万年薪!

讲师均由各大公司技术leader和国内外顶级高校博士组成!

马上开始学习,和“前辈们”一样进入心仪公司,夺取高薪,成为人生赢家。

也许你面试时的考官就是七月在线的讲师/学员。

零基础python必背代码-编程零基础应当如何开始学习 Python?相关推荐

  1. 零基础python必背代码-零基础入门学习python 96集全

    零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...

  2. 零基础python必背代码-零基础小白Python入门必看:通俗易懂,搞定深浅拷贝

    Python中的深浅拷贝 在讲深浅拷贝之前,想先讲一下 is 和==的区别. 在进行对象是否相等比较的时候我们可以用is 和 == is:比较两个对象的引用是否相同,即它们的id 是否一样 == : ...

  3. python必背代码-Python中期学者必看:让你的python代码更高效灵活

    前言 : Python很强大,毋庸置疑,魅力无限,掌握起来不像看起来那么容易,在你初步了解了python的语言特性和基本语法以后,让我们深入探讨一下关于代码的高效性和可优化型的问题,如果程序员对于py ...

  4. 零基础python必背代码-30个Python常用极简代码,拿走就用

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  5. python必背代码-Python小白必备的8个最常用的内置函数(推荐)

    Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print() prin ...

  6. python必背代码-让你的python代码优雅地道的小技巧

    转载地址:http://www.lightxue.com/transforming-code-into-beautiful-idiomatic-python 用了python这么久,逐渐才了解到pyt ...

  7. python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏

    " 阅读本文大概需要 10 分钟. " 我们知道 Python 是一种动态语言,在声明一个变量时我们不需要显式地声明它的类型,例如下面的例子:a = 2 print('1 + a ...

  8. python必背代码-Python一些实用代码

    1.if python a = 1 b = 2 c = a if a > b else b 2.with with open('/path/to/file', 'r') as f: print ...

  9. 视频教程-ARDUINO零基础入门教程【代码编程篇】-Arduino

    ARDUINO零基础入门教程[代码编程篇] 精通各种单片机编程,有十年以上ARDUINO,51单片机/STM32/PIC/AVR编程,硬件设计,绘图,编程经验.熟悉各种常用传感器使用和物联网通讯 赵勇 ...

最新文章

  1. 【MM】采购退货的处理办法
  2. 记录一下pom文件scope各种配置所作的行为
  3. VForum 2008系列之六:分论坛视频-虚拟世界中的应用
  4. undertow服务器分析_进入Undertow Web服务器
  5. 一只小蜜蜂(HDU-2044)
  6. android中src和background区别
  7. python常用算法包_Python中常用的包--sklearn
  8. 记录——《C Primer Plus (第五版)》第九章编程练习第六题
  9. Sea Battle<海战>(思路题)
  10. 【病毒程序】发一个无聊的小病毒(无限弹窗)
  11. 分享一个好用的添加网络代理的工具SocksCap
  12. 超级浏览器对跨境亚马逊防关联有用吗?
  13. 批处理当前文件夹下所有文件和子文件夹中的文件
  14. 经验模态分解股票波动matlab,matlab经验模态分解程序
  15. vue解决分页组件删除和添加内容-页码出现错误
  16. wps2016向程序发送命令_解决excel弹出“向程序发送命令时出现问题”的方法
  17. 遥感图像变化检测数据集
  18. 你的小程序可以接广告赚钱了
  19. linux获取系统信息(sysinfo函数的使用)
  20. 【python自动化】基于Splinter的自动化回归/测试脚本

热门文章

  1. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
  2. linux磁盘怎么分区比较好,500G的硬盘,怎么分区比较合理?
  3. 开发日记-20190707 关键词 读书笔记 《Perl语言入门》Day 4
  4. gradle学习(1)hello world
  5. 集群节点Elasticsearch升级
  6. 分布式锁的实现方式——ACID数据库、缓存或者是zk
  7. 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断...
  8. 微信小程序之生成二维码
  9. [FJOI2016]建筑师(斯特林数)
  10. [Effective JavaScript 笔记]第6章:库和API设计--个人总结