读书笔记「Python编程:从入门到实践」_4.操作列表
4.1 遍历整个列表
4.1.1 深入地研究循环
4.1.2 在for循环中执行更多的操作
4.1.3 在for循环结束后执行一些操作
例
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
Alice, that was a great trick!
I can't wait to see your next trick, Alice. David, that was a great trick!
I can't wait to see your next trick, David. Carolina, that was a great trick!
I can't wait to see your next trick, Carolina.
循环的两个重点,一个是冒号,一个是缩进,另外使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。
for xxx in xxxs:
print(xxx)
4.2 避免缩进错误
4.2.1 忘记缩进
对于位于for 语句后面且属于循环组成部分的代码行,一定要缩进。如果你忘记缩进,Python会提醒你:IndentationError: expected an indented block
4.2.2 忘记缩进额外的代码行
如果你预期某项操作将针对每个列表元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行代码缩进。
4.2.3 不必要的缩进
如果你不小心缩进了无需缩进的代码行,Python将指出这一点:IndentationError: unexpected indent
4.2.4 循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。
4.2.5 遗漏了冒号
for 语句末尾的冒号告诉Python,下一行是循环的第一行。
4.3 创建数值列表
4.3.1 使用函数range()
Python函数range() 让你能够轻松地生成一系列的数字
4.3.2 使用range()创建数字列表
要创建数字列表,可使用函数list() 将range() 的结果直接转换为列表
使用函数range() 时,还可指定步长。打印1~10内的偶数:range(2,11,2)
使用函数range() 几乎能够创建任何需要的数字集
4.3.3 对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数.min(),max(),sum()
4.3.4 列表解析
将for 循环和创建新元素的代码合并成一行,并自动附加新元素。
例
# 打印2-10之间的偶数
for value in range(1,11,2):
print(value)
# 以队列的形式打印1-5
print(list(range(1,6)))
# 打印1-10的平方
squares=[]
for value in range(1,11):
squares.append(value**2)
print(squares)
#打印1-10平方中的最小值
print(min(squares))
#打印1-10平方中的最大值
print(max(squares))
#打印1-10平方的和
print(sum(squares))
#列表解析
lists=[v**2 for v in range(1,10)]
print(lists)
结果
1
3
5
7
9
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
1
100
385
[1, 4, 9, 16, 25, 36, 49, 64, 81]
4.4 使用列表的一部分
4.4.1 切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。 list[strIndx:endIndx]
如果你没有指定第一个索引,Python将自动从列表开头开始,print(players[:4])
如果你没有指定第一个索引,Python将自动到列表结尾结束。print(players[2:]), print(players[-3:])
4.4.2 遍历切片
如果要遍历列表的部分元素,可在for 循环中使用切片 for player in players[:3]:
4.4.3 复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
a=b[:] a复制了b a=b a和b指向了同一个列表
例
tList=['aaa','bbb','ccc','ddd','eee','fff']
#打印index1到3元素(不含3)
print(tList[1:3])
#打印index0到3元素(不含3)
print(tList[:3])
#打印index3到最后的元素
print(tList[3:])
#打印倒数3个元素
print(tList[-3:])
#打印index1到3元素(不含3)
for t in tList[1:3]:
print(t+"\t")
#t2List和tList指向同一个队列
t2List=tList
tList.pop()
t2List.pop()
print(tList)
print(t2List)
#t3List复制了t2List
t3List=t2List[:]
t2List.pop()
print(t2List)
print(t3List)
结果
['bbb', 'ccc']
['aaa', 'bbb', 'ccc']
['ddd', 'eee', 'fff']
['ddd', 'eee', 'fff']
bbb
ccc
['aaa', 'bbb', 'ccc', 'ddd']
['aaa', 'bbb', 'ccc', 'ddd']
['aaa', 'bbb', 'ccc']
['aaa', 'bbb', 'ccc', 'ddd']
4.5 元组
4.5.1 定义元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
尝试修改元组dimensions 中的一个元素。TypeError: 'tuple' object does not support item assignment
4.5.2 遍历元组中的所有值
像列表一样,也可以使用for 循环来遍历元组中的所有值:
4.5.3 修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
例
tList=('aaa','bbb','ccc','ddd','eee','fff')
for t in tList:
print(t)
print(tList[1])
tList[1]='xxxx'
结果
aaa
bbb
ccc
ddd
eee
fff
bbb
File "C:/Users/changxininjp/PycharmProjects/helloworld/helloworld.py", line 5, in <module>
tList[1]='xxxx'
TypeError: 'tuple' object does not support item assignment
4.6 设置代码格式
4.6.1 格式设置指南
Python改进提案 (Python Enhancement Proposal,PEP)。PEP 8是最古老的PEP之一
代码被阅读的次数比编写的次数多
4.6.2 缩进
PEP 8建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。
4.6.3 行长
很多Python程序员都建议每行不超过80字符。
4.6.4 空行
要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件,但也不能滥用;
4.6.5 其他格式设置指南
https://python.org/dev/peps/pep-0008/
读书笔记「Python编程:从入门到实践」_4.操作列表的更多相关文章
- 读书笔记「Python编程:从入门到实践」_3.列表简介
3.1 列表是什么 列表 由一系列按特定顺序排列的元素组成. 在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素. 3.1.1 访问列表元素 指出列表的名称,再指出元素的索引 ...
- 读书笔记「Python编程:从入门到实践」_9.类
9.1 创建和使用类 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想. OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把 ...
- 读书笔记「Python编程:从入门到实践」_11.测试函数
11.1 测试函数 要学习测试,得有要测试的代码.下面是一个简单的函数,它接受名和姓并返回整洁的姓名: def get_formatted_name(first, last): "" ...
- 读书笔记「Python编程:从入门到实践」_10.文件和异常
10.1 从文件中读取数据 10.1.1 读取整个文件 with open(~) as object: contents=object.read() with open('C:/Users/jou/ ...
- 读书笔记「Python编程:从入门到实践」_8.函数
8.1 定义函数 def greet_user(): # def 来告诉Python你要定义一个函数.这是函数定义 """Hello World""& ...
- 读书笔记「Python编程:从入门到实践」_7.用户输入和while循环
7.1 函数input()的工作原理 函数input() 让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以方便你使用. message = input(&qu ...
- 读书笔记「Python编程:从入门到实践」_6.字典
6.1 一个简单的字典 alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points' ...
- 读书笔记「Python编程:从入门到实践」_5.if语句
5.1 一个简单示例 cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': print(car.up ...
- 读书笔记「Python编程:从入门到实践」_2.变量和简单数据类型
做了大半年RPA了,用的工具是Kapow. 工作没有那么忙,不想就这么荒废着,想学点什么.就Python吧. 为期三个月,希望能坚持下来. 2.1 变量的命名和使用 变量名只能包含字母.数字和下划线. ...
随机推荐
- BZOJ 4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
好难啊..根本不会做..基本上是抄Claris... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4044 (luogu) ...
- The merchant
The merchant Time Limit: 3000MS Memory Limit: 65536K Description There are N cities in a cou ...
- springCloud学习-断路器(Hystrix)
1.问题分析 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高 ...
- Fedora15下安装Android开发环境
Fedora15下安装Android开发环境需要以下步骤: 完整步骤. 1. 安装正确版本的JDK. 2. 安装Eclipse. 3. 安装ADT. 4. 安装Android SDK. 5. 安 ...
- 【ACM】NYOJ_288_Time_20130725
Time时间限制:1000 ms | 内存限制:65535 KB 难度:2描述 Digital clock use 4 digits to express time, each digit is ...
- [bzoj3061][Usaco13Feb]Partitioning the Farm_动态规划_状压dp
Partitioning the Farm bzoj-3061 Usaco13Feb 题目大意:给定一个n*n的方格图,用k条贯穿方格图的直线将整个方格图分割,使得每一块的权值和的最大值最小. 注释: ...
- [转]十五天精通WCF——第八天 对“绑定”的最后一点理解
转眼已经中断10几天没有写博客了,也不是工作太忙,正好碰到了端午节,然后最近看天津台的爱情保卫战入迷了...太好看了,一直都是回味无穷...而且 涂磊老师话说的真是tmd的经典,然后就这样耽搁了,好了 ...
- React Native Mac配置指南
步骤 http://facebook.github.io/react-native/docs/getting-started.html#content 依照React Native官网步骤一步步安装, ...
- HDU 5434
其实是一道状态DP题.都是行与行之间的转移,可以知道,当某j列中有一个象,如果存在情况i-1行j-1列有象而i,j-1位置无象则不可放,或者i-1,j+1有而i,j+1无同样不可放. 使用快速状态转移 ...
- tiny4412移植opencv2.4.7手记
在买了新的4412板子后.打算趁着刚成功在6410上移植过的经验,速度解决下.不想出现了各种问题.小结下: 1.关于opencv的移植: tiny4412的linux3.5上,须要把opencv的li ...