python自学Day03(自学书籍python编程从入门到实践)
第4章 操作列表
- 只需要几行代码无论列表有多长,循环都能够让我对列表的每个元素都采取一个或一系列相同的措施,从而高效的处理任何长度的列表。
4.1 遍历整个列表
- 对列表中每个元素都拿出来,进行一个或者一系列相同的操作时候需要遍历列表。
- 搭配for 循环使用
Names = ['henry','beckham','ronaldo','arp','rooney','kaka']
#使用for循环在列表中调取列表中的每一个元素 存贮在变量 Name 中
for Name in Names :
print('My favorite football player is '+Name.title())
输出结果为:
My favorite football player is Henry
My favorite football player is Beckham
My favorite football player is Ronaldo
My favorite football player is Arp
My favorite football player is Rooney
My favorite football player is Kaka
4.1.1 深入地研究循环
- for 循环在上述循环中,计算器首先读入第一行存入一个列表Names
- 第二步提取列表Names第一个元素 henry 存储到变量Name 中
- 第三步执行输出,输出时给变量调用title方法,让首字母大写,然后打印出整句。
- 因为列表中还有其他值,于是循环继续,来到第二个元素,重复执行第二、三步的操作。
- 直到列表中的元素被调用完,结束。
- 注意:for循环中用于存贮每个值得临时变量,虽然可以指定任何名称但是便于操作,最好使用列表复数,变量单数的模式书写名称。
4.1.2 在for循环中执行更多的操作
- 在for循环中想包含多少代码都可以。
- for循环包含的需要执行的代码,需要缩进。
4.1.3 在for循环结束后执行一些操作
- 在for循环后面没有缩进的代码,只执行一次。
- 使用for循环对数据集执行整体操作的不错的方式。
4.2 避免缩进错误
- 缩进的目的是为了让你的代码结构清晰并且便于判断代码之间的关联。
4.2.1 忘记缩进
Names = ['henry','beckham','ronaldo','arp','rooney','kaka']
#使用for循环在列表中调取列表中的每一个元素 存贮在变量 Name 中
for Name in Names :
print('My favorite football player is '+Name.title())
结果:
File "D:/study/pythonwenjian/列表组织的测试.py", line 4
print('My favorite football player is '+Name.title())
^
IndentationError: expected an indented block
4.2.2 忘记缩进额外的代码行
- 例如一个for循环下面本来是要输出两个print函数内容,但是第二个忘记缩进。
- 格式上不会有错误,但是逻辑上出错了,没有达到程序员本身想要达到的目的。
4.2.3 不必要的缩进
- 对无需缩进的代码进行缩进
4.2.4 循环后不必要的缩进
- 拿到一个需求编写代码时候,我们首先要理清代码的逻辑,在书写代码时注意细节。
4.2.5 遗漏了冒号
- 在for循环中 冒号是告诉计算机代码之间的关系,所以要注意不要遗漏了冒号。
练习:
#将三个口味的披萨组成一个列表
Pizza_list = ['Pizza California','Pizza Hawaii','Pizza Mushroom']
#使用for循环将列表中的披萨逐个打印
for Pizza in Pizza_list :
print('I like '+Pizza)
#在程序末尾加入一句话,不包含在for循环中。
print('I really love pizaa!')
结果:
I like Pizza California
I like Pizza Hawaii
I like Pizza Mushroom
I really love pizaa!
4.3 创建数值列表
4.3.1 使用函数range()
- python中使用函数range让你能够轻松的生成一系列数字。
- range内的三个参数(起始值,结束值,步长)其中起始值包含在范围内,结束值不在范围内,而步长则是每一步单位。
#range函数中 起始值为0包含其中 结束值为4不包含4 默认步长为1
for i in range(0,4):
print(i)
#range函数中 起始值为1包含1 结束值为10不包含10 步长为2
for y in range(1,10,2):
print(y)
结果为:
0
1
2
3
1
3
5
7
9
4.3.2 使用range()创建列表
- 使用函数list()将range()的结果直接转换为列表。
- 也可以先创建一个新的空列表,然后使用for循环将range中的值利用append方法添加到空列表当中去。
#方法一:利用list函数 将range的结果直接转换为列表
Numbers = list(range(1,6))
print(Numbers)
结果:
[1, 2, 3, 4, 5]
#方法二:创建空列表 利用for循环 将range结果通过append方法一次加入空列表中
Numbers = []
for Number in range(1,6):
Numbers.append(Number)
print(Numbers)
结果:
[1, 2, 3, 4, 5]
4.3.3 对数字列表进行简单的统计计算
- min函数 计算列表中的最小值
- max函数 计算列表中的最大值
- sum函数 计算类表中值得总和
x = [1, 2, 3, 4, 5]
print(min(x))
print(max(x))
print(sum(x))
结果:
1
5
15
4.3.4 列表解析
- 将for循环和创建新元素的代码合成一行,并自动附加新元素。
- 列表 = [ 表达式 for循环 判断语句]
#1-100中能够整除20的列表
Numbers = []
for Number in range(1,101) :
if Number%20 ==0:
Numbers.append(Number)
print(Numbers)
结果为:
[20, 40, 60, 80, 100]
#使用解析列表一行代码写出如上述代码相同效果的代码
Numbers = [Number for Number in range(1,101) if Number%20 == 0]
print(Numbers)
结果为:
[20, 40, 60, 80, 100]
练习:
#4-3 使用for循环打印1-20(包含)
for i in range(1,21):
print(i)
结果为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#4-4创建一个列表,其中包函数字1- 10在使用一个for循环讲这些数字打印出来
Numbers = list(range(1,11))
for Number in Numbers:
print(Number)
结果为:
1
2
3
4
5
6
7
8
9
10
#4-5 计算1-100总和 创建一个列表包含1-100 分别找出最大值 最小值 以及列表元素总和
list_4 =list(range(1,101))
print(min(list_4))
print(max(list_4))
print(sum(list_4))
结果为:
1
100
5050
#4-6 通过range创建一个奇数列表 包含1-20 奇数并且打印出来
list_6 = list(range(1,21,2))
print(list_6)
结果为:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#4-7 创建一个列表包含3-30内 能被3整除的数 并且逐个打印出来
list_7 = []
for i in range(3,31):
if i%3 == 0 :
list_7.append(i)
print(i)
print(list_7)
结果为:
3
6
9
12
15
18
21
24
27
30
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
#4-8 创建一个列表 包含1-10 的立方 并且逐个打印出来
list_8 = []
for i in range(1,11):
list_8.append(i**3)
print(i**3)
print(list_8)
结果为:
1
8
27
64
125
216
343
512
729
1000
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
#4-9 使用列表解析生成4-8
list_9 = [i**3 for i in range(1,11)]
print(list_9)
结果为:
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
4.4 使用列表的一部分
4.4.1 切片
- 列表名称[起始值:结束值:步长] 起始值包含在内 结束值不包含在内 步长为单位默认为1
- 起始值 和 结束值 所对应的是列表的索引值
Nubers = [i for i in range(0,11)]
print(Nubers)
print(Nubers[0:3])
print(Nubers[1:])
print(Nubers[:6])
print(Nubers[ : : 2])
print(Nubers[4:10:2])
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5]
[0, 2, 4, 6, 8, 10]
[4, 6, 8]
- 使用 - 号倒着索引
Nubers = [i for i in range(0,11)]
print(Nubers)
print(Nubers[-2:-6:-1])
print(Nubers[-2:])
print(Nubers[:-6])
print(Nubers[-1: :-2])
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[9, 8, 7, 6]
[9, 10]
[0, 1, 2, 3, 4]
[10, 8, 6, 4, 2, 0]
注意事项:
Nubers = [i for i in range(0,11)]
print(Nubers)
#输出为空列表
print(Nubers[-2:-6])
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[]
4.4.2 遍历切片
List = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in List[:7]:
print(i)
结果为:
0
1
2
3
4
5
6
4.4.3 复制列表
- 复制整个列表可使用切片 省略 起始索引 和 结束索引 的方法,例如创建一个数值列表A,然后复制给B
A = [1,2,5,6,9]
B = A[:]
print(A)
print(B)
结果:
[1, 2, 5, 6, 9]
[1, 2, 5, 6, 9]
- 然后我们探索一个问题B是通过A切片的方式复制过来的,那么A B的改变会影响彼此吗?
- 我们往A列表中加一个0,往B列表中加一个7 看看变化
A = [1,2,5,6,9]
B = A[:]
A.append(0)
B.append(7)
print(A)
print(B)
结果:
[1, 2, 5, 6, 9, 0]
[1, 2, 5, 6, 9, 7]
- 执行的结果证明,没有互相影响。那么我们可以理解为 [ : ] 方式复制列表相当于给A的副本给了B
- 然后我们探索一下直接赋值B=A 执行上述操作是否会彼此影响
A = [1,2,5,6,9]
B = A
A.append(0)
B.append(7)
print(A)
print(B)
结果:
[1, 2, 5, 6, 9, 0, 7]
[1, 2, 5, 6, 9, 0, 7]
- 执行结果证明,如果直接赋值两个列表同时改变。那么我们可以理解为 变量A B同时指向一个列表
练习:
#打印消息,再使用切片打印前三个元素
A = 'The first three items in the list are:'
print(A[:3])
#使用切片打印列表中间的三个元素
A = 'Three items in from the middle of the list are:'
print(A[23:26])
#使用切片打印列表末尾的三个元素
A = 'The lsat three items in the list are:'
print(A[-1:-4:-1])
#写出一个球星列表,然后复制给你的朋友喜欢球星列表,在两个列表中添加不同球星。
#使用for循环逐个打印出你们喜欢的球星
Names = ['henry','beckham','ronaldo','arp','rooney','kaka']
Friend_plers = Names[:]
Names.append('messi')
Friend_plers.append('Nash')
for i in Names:
print('My favorite player is '+i)
for y in Friend_plers:
print("My friend's favorite player is "+y)
结果:
The
mi
:er
My favorite player is henry
My favorite player is beckham
My favorite player is ronaldo
My favorite player is arp
My favorite player is rooney
My favorite player is kaka
My favorite player is messi
My friend's favorite player is henry
My friend's favorite player is beckham
My friend's favorite player is ronaldo
My friend's favorite player is arp
My friend's favorite player is rooney
My friend's favorite player is kaka
My friend's favorite player is Nash
4.5 元组
- 列表是可以修改的,用 [ ] 标识 元组是不可修改的 用( ,)来表示 逗号分隔是元组标识的关键
4.5.1 定义元组
- 使用()和 , 标识
- , 号是关键
A = (3)
print(type(A))
A = (3,)
print(type(A))
输出结果:
<class 'int'>
<class 'tuple'>
- 第一个里面虽然使用了()标识 但是类型是整数
- 第二个加了 , 之后 类型是元组类型 所以 ,是关键
4.5.2 遍历元组中所有的值
- 使用for循环 遍历元组中所有的值
#创建一个元组A
A = (3,6,9)
for i in A:
print(i)
结果为:
3
6
9
4.5.3 修改元组变量
- 元组的元素是不可修改的,所以修改元组变量我们可以使用重新赋值的方法
#我们首先探索 使用列表切片的方式修改元组元素
A = (3,6,9)
A[0] = 1
print(A)
结果为:
Traceback (most recent call last):
File "D:/study/pythonwenjian/列表组织的测试.py", line 3, in <module>
A[0] = 1
TypeError: 'tuple' object does not support item assignment
#我们再来探索使用重新赋值的方法来修改元组
A = (3,6,9)
A = (4,5,6)
print(A)
结果为:
(4, 5, 6)
4.6 设置代码格式
- 让代码易于阅读
- 遵循一些代码格式的约定
4.6.1 格式设置指南
- pep8 格式设置指南
- 编写清晰易读的代码
4.6.2 缩进
- tab键一个缩进单位 = 四个 空格
- 利用缩进处理程序的逻辑关系
4.6.3 行长
- 建议每行不超过80字符
- 协作编写编程都需要参与者遵守一个规则那就是pep8指南
4.6.4 空行
- 使用空行分隔代码,不可乱用
- 一切皆有序
课后阅读:pep8 编码指南中文版
https://blog.csdn.net/ratsniper/article/details/78954852#introduction-%E4%BB%8B%E7%BB%8D
python自学Day03(自学书籍python编程从入门到实践)的更多相关文章
- 《Python编程:从入门到实践》分享下载
书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...
- 《python编程从入门到实践》2.3字符串
书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
- Python编程从入门到实践笔记——文件
Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...
- Python编程从入门到实践笔记——类
Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- Python编程从入门到实践笔记——if语句
Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...
- Python编程从入门到实践笔记——操作列表
Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...
随机推荐
- 「雕爷学编程」Arduino动手做(36)——WS2812B 4位彩灯模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- css概述五
十一.显示 1.显示方式 决定元素在网页中的表现形式(块级,行内,行内块,table) 语法: display: 取值: 1.display:block: 让元素以块级的方式显示 2.display: ...
- 解决el-tree横向滚动条问题
代码如下 效果如图 仅做下记录,不做过多解释
- Java并发包4--可重入锁ReentrantLock的实现原理
前言 ReentrantLock是JUC提供的可重入锁的实现,用法上几乎等同于Synchronized,但是ReentrantLock在功能的丰富性上要比Synchronized要强大. 一.Reen ...
- poj3687拓扑排序
Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14749 Accepted: 4325 D ...
- vscode环境配置(二)——C Program Debug
一.任务准备 launch.json { "version": "0.2.0", "configurations": [ { "n ...
- 【pyecharts】地图显示不全
官网给的解释如下: 自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件. 如用户需要用到地图图表,可自行安装对 ...
- python list 与 String 互相转换
str0 = '127.0.0.1' list0 = str0.split('.') print(list0) #['127', '0', '0', '1'] str1 = '#'.join(list ...
- 编译安装路由器用的Privoxy 3.0.28(华硕RT-AC88U,原版梅林384.15)
编译安装路由器用的Privoxy 3.0.28(华硕RT-AC88U,原版梅林384.15) Privoxy有什么特殊之处? 支持和SOCKS/HTTP代理的级联.这个功能轻松将SOCKS转为HTTP ...
- Unity读取StreamingAssets路径下的文件
/// <summary> ///读取StreamingAssets中的文件 /// </summary> /// <param name="path" ...