第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编程从入门到实践)的更多相关文章

  1. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  2. 《python编程从入门到实践》2.3字符串

    书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...

  3. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  4. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  5. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  6. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  7. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  8. Python编程从入门到实践笔记——字典

    Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...

  9. Python编程从入门到实践笔记——if语句

    Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...

  10. Python编程从入门到实践笔记——操作列表

    Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...

随机推荐

  1. 一文解读C# 动态拦截第三方进程中的方法函数(外挂必备)

    一.前言 由于项目需要,最近研究了一下跨进程通讯改写第三方程序中的方法(运行中),把自己程序中的目标方法直接覆盖第三方程序中的方法函数:一直没有头绪,通过搜索引擎找了一大堆解决方案,资料甚是稀少,最后 ...

  2. mybatis开发,你用 xml 还是注解?我 pick ...

    最近在看公司项目时发现有的项目mybatis是基于注解开发的,而我个人的习惯是基于xml文件开发. 对于mybatis注解开发的原理理解不够,于是翻阅了部分源码,写下此文.主要介绍了mybatis开发 ...

  3. Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体,通过window.top.parent.Xrm.Page.getUrl()可以知道父窗体的URL

    Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体?相信有人会遇到过这种头疼的问题,我这里分享一种方式: 在contact快速创建窗体的onload时间执行如下代码 ...

  4. Visual C++ 6.0(完整绿色版)的下载、安装和破解(图解)

    vc工具的下载 链接: https://pan.baidu.com/s/1GTkcWjureiZS_2WL2dvrMw 提取码: 5859 首先点击链接下载好压缩包并解压 这里是解压好滴文件目录 双击 ...

  5. 原生js获取元素的各种位置(大全)

    加给元素: offsetLeft (距离定位父级的距离) offsetTop (距离定位父级的距离) offsetWidth (可视宽度) offsetHeight (可视高度) clientLeft ...

  6. 9.5 Go 依赖管理

    9.5 Go 依赖管理 godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息. A. 所有的第三方包都放在$GOPATH的src目录下. B. 如果不同程序依赖的版本不一样 ...

  7. 在php文件中xml格式

    本人是小白,有错误的地方请指正,勿喷! 在写一个调查问卷的过程中用到了xml文件,如想要了解,可以通过以下链接简单学习:http://www.w3school.com.cn/xml/ 所用工具:php ...

  8. 我的excel是2003版本的,里边有sheet1、sheet2两个工作表,当使用GetOleDbSchemaTable获取表Schema时,结果是4个,分别为: sheet1 sheet1$ sheet2 sheet2$

    原帖地址:http://bbs.csdn.net/topics/310230098 ---------------------------------------------------------- ...

  9. pip命令报错“no perl script found in input”

    windows10,命令行下使用pip命令时报错,python运行成功,且环境变量已经设置,可能是更新了新版本pip所导致 解决方案: 一.使用pip.exe+命令可解决这个问题 二.进行python ...

  10. [ES6系列-03]ES6中关于参数相关特性详解(参数默认值与参数解构赋值与剩余参数)

    [原创] 码路工人 大家好,这里是码路工人有力量,我是码路工人,你们是力量. 今天总结一下 ES6 中跟参数相关的内容. 欢迎补充斧正.留言交流. 让我们互相学习一起进步. 1. ES6 参数默认值( ...