《Python编程快速上手——让繁琐的工作自动化》读书笔记3
其实,写这个是为了督促自己看书……然后 ……其实没有然后了,人一松懈下来,就……ε=(´ο`*)))唉
第四章 列表
①列表数据类型
……
列表是数据类型!!!
……
……
没啥好说的了,要不是看书,还以为和数组一样,现在看完全不一样啊,绝望.jpg
“列表”是一个值,它包括多个字构成的序列,术语“列表值”指的是列表本身(它作为一个值,可以保存在变量中,或传递给函数,像所有其他值一样),而不是指列表值之内的那些值。列表看起来像这样:['cat', 'bat', 'rat', 'elephant']。就像字符串值用引号来标记字符串起止一样,列表用左方括号(代表)开始,右方括号(代表)结束。列表中的值称为“表项”,用逗号隔开。
——摘自书59页(那两个代表是我为了语意连贯自己加的)
在交互环境中大家可以尝试输入
[1,2,3],输出:[1,2,3]。
['cat', 'bat', 'rat', 'elephant'],输出:['cat', 'bat', 'rat', 'elephant']
②用下标获取列表中的单个值
就是这里让我联想到数组的……同样,还是直接先举栗子吧ヾ(◍°∇°◍)ノ゙
spam=['cat','bat','rat','elephant']
print(spam[0])
print(spam[1])
print(spam[2])
print(spam[3])
print(spam[-1])
print(spam[-3])
print(spam[4])
输出:
bat
rat
elephant
elephant
bat
Traceback (most recent call last):
File "/usercode/file.py", line 8, in <module>
print(spam[4])
IndexError: list index out of range
从输出信息就可以看出,列表中的第一个表项(请允许我在后面称之为元素)对应的序号(请允许我强行取名)是0,也就是说,这个列表中有4个元素,但是元素的序号不是1、2、3、4而是0、1、2、3,而,一旦要访问第5个元素(实际上不存在),输入4的时候,会报错。这与C++中的数组也有相似之处。那么,如果是负数序号怎么办呢?那就从序号0的位置返回序号3的位置然后逆时针向后,也就是按3、2、1的顺序依次试-1、-2、-3.。
如上图所示(图画的不好,大家不要见怪)。
那么,如果是序号为4,也就是第5个元素呢?--》IndexError: list index out of range===》也就是超限
除了刻板的输出,当然,还有一些其他的操作,比如:
spam=['cat','bat','rat','elephant']
print('hello '+spam[0])
输出:hello cat
另外再补充一点,序号不能是浮点数,比如:
spam=['cat','bat','rat','elephant']
print(spam[1.0])
报错信息:
Traceback (most recent call last):
File "/usercode/file.py", line 2, in <module>
print(spam[1.0])
TypeError: list indices must be integers, not float
列表也可以包含其他列表值。这些列表的列表中的值,可以通过多重下标来访问:
spam=[['cat','bat','rat','elephant'],[10,20,30,40,50]]
print(spam[0][1])
print(spam[1][4])
输出:
bat
50
第一个下标表示使用哪个值,第二个下标表明该列表中哪一个值。
③利用切片获取子列表
spam[2]是一个列表和下标。
spam[1:4]是一个列表和切片。
在一个切片中,第一个整数是切片开始处的下标。第二个整数是切片结束处的下标。
spam=['cat','bat','rat','elephant']
print(spam[0:2])#output:['cat', 'bat']
print(spam[-2:2])#output:[]
print(spam[-1:0])#output:[]
print(spam[0:0])#output:[]
print(spam[0:4])#output:['cat', 'bat', 'rat', 'elephant']
print(spam[0:5])#output:['cat', 'bat', 'rat', 'elephant']
④用len()获取列表长度
spam=['cat','bat','rat','elephant']
print(len(spam))#output:4
⑤列表的增删改查
1、增——用append()和insert()方法在列表中添加值&&列表连接与链表复制
spam=['cat','bat']
spam.insert(2,'rat')
spam.append('elephant')
print(spam)#output:['cat', 'bat', 'rat', 'elephant']
append()就是在列表的末尾添加元素(参数),而insert()可以控制插入的位置,比如,上面的(位置,参数),这个位置就是插入后该参数是第几个元素,也就是插入后该参数后面元素的下标。
spam=['cat','bat']+['rat', 'elephant']
print(spam)#output:['cat', 'bat', 'rat', 'elephant']
bacon=['cat','bat']+[1,2]
print(bacon)#output:['cat', 'bat', 1, 2]
↑列表连接
↓列表复制
spam=['cat','bat']*3
print(spam)#output:['cat', 'bat', 'cat', 'bat', 'cat', 'bat']
2、删——用del语句&&用remove()方法
spam=['cat','bat','rat','elephant']
del spam[2]
print(spam)#output:['cat', 'bat', 'elephant']
spam=['cat','bat','rat','elephant']
spam.remove('elephant')
print(spam)#output:['cat', 'bat', 'rat']
3、改——用下标改变列表中的值&&sort()排序
spam=['cat','bat','raccoon','elephant']
spam[2]='rat'
print(spam)#output:['cat', 'bat', 'rat', 'elephant']
spam=['cat','bat','raccoon','elephant']
spam.sort()
print(spam)#output:['bat', 'cat', 'elephant', 'raccoon']
bacon=[61,1,4,3,2,45,-2]
bacon.sort()
print(bacon)#output:[-2, 1, 2, 3, 4, 45, 61]
sort()↑升序排列
4、查——in和not in操作符&&用index()方法
spam=['cat','bat','raccoon','elephant']
print('raccoon' in spam)#output:True
print('raccoon' not in spam)#output:False
print('rat' in spam)#output:False
spam=['cat','bat','raccoon','elephant']
print(spam.index('raccoon'))
print(spam.index('rat'))
输出:
2
Traceback (most recent call last):
File "/usercode/file.py", line 3, in <module>
print(spam.index('rat'))#output:False
ValueError: 'rat' is not in list
如果所查找的值在列表中,就返回该值的下标,如果不在,Python就报ValueError
⑥使用列表
书里的例子是用来储存猫的名字(WA的一声哭了出来,也想养一只猫啊)
先是暴力版本:
print('Enter the name of cat 1:')
catName1=input()
print('Enter the name of cat 2:')
catName2=input()
print('Enter the name of cat 3:')
catName3=input()
print('Enter the name of cat 4:')
catName4=input()
print('Enter the name of cat 5:')
catName5=input()
print('Enter the name of cat 6:')
catName6=input()
print('The cat names are:')
print(catName1+' '+catName2+' '+catName3+' '+catName4+' '+catName5+' '+catName6)
这个……怎么说呢,乍一看没有毛病,但是真的好麻烦
然后就出现了升级改进版:
catNames=[]
while True:print('Enter the name of cat '+str(len(catName)+1)+'Or anter nothing to stop.):')name=input()if name=='':breakcatNames=catNames+[name]
print('The cat names are:')
for name in catNames:print(' '+name)
str(len(catName)+1)
这一句是计算列表中元素的个数,然后+1,再将整型转换为字符串(不然没法连接)
另外:
for i in range(4):↑↓效果相同
for i in [0,1,2,3]:
⑦赋值——多重赋值&&增强的赋值操作
cat=['fat', 'black', 'loud']
size=cat[0]
color=cat[1]
disposition=cat[2]
可以直接写作
cat=['fat', 'black', 'loud']
size,color,disposition=cat
#但是变量的个数必须与列表的长度严格一致,否则↓
cat=['fat', 'black', 'loud']
size,color,disposition,name=cat
报错信息如下:
Traceback (most recent call last):File "/usercode/file.py", line 3, in <module>size,color,disposition,name=cat
ValueError: need more than 3 values to unpack
增强的赋值操作
增强的赋值语句 | 等价的赋值语句 |
spam+=1 | spam=spam+1 |
spam-=1 | spam=spam-1 |
spam*=1 | spam=spam*1 |
spam/=1 | spam=spam/1 |
spam%=1 | spam=spam%1 |
然后,我们可以这样:
cat=['fat', 'black', 'loud']
cat*=3
print(cat)
#output:['fat', 'black', 'loud', 'fat', 'black', 'loud', 'fat', 'black', 'loud']
⑧类似列表的类型:字符串和元组
列表并不是唯一表示序列值的数据类型。比如,字符串与列表实际上很相似。也可以用于列表类似的方法操作字符串:
name='Zophie'
print(name[0])
print(name[-2])
print(name[0:4])
print('Zo' in name)
for i in name:print(' * * * '+i+' * * * ')
输出:
Z
i
Zoph
True
* * * Z * * *
* * * o * * *
* * * p * * *
* * * h * * *
* * * i * * *
* * * e * * *
而元组除了两个方面,与列表几乎完全一样。
两方面:
1、元组输入用的是圆括号,而非方括号
eggs=('Hello',42,0.5)
print (eggs[0])
print (eggs[1:3])
print (len(eggs))
输出:
Hello
(42, 0.5)
3
2、但是元组与字符串一样,与列表不同的是,他们都是不可变的,不能改变他们的值。
比如:
eggs=('Hello',42,0.5)
eggs[1]=99
报错信息:
Traceback (most recent call last):
File "/usercode/file.py", line 2, in <module>
eggs[1]=99
TypeError: 'tuple' object does not support item assignment
好了,现在,讲到了一个关键问题
—— ——可变和不可变数据类型
安利别人写的博客(ε=(´ο`*)))唉我什么时候才能写这么好的博客)
点击打开链接
⑨用list()和tuple()函数来转换类型
>>>tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
>>>list(('cat', 'dog', 5))
['cat', 'dog', 5]
>>>list('hello')
['h', 'e', 'l', 'l', 'o']
⑩引用
与C++中类似,相当于起一个别名。
一旦更改任何一个的内容,列表与列表的引用都会改变。
就像无论别人是直接叫我们的外号还是直接叫我们的名字我们都知道是是在叫我们
然后列表的引用直接是:列表的引用的名字=列表的名字,这样就可以了
举例:
spam=['A','B','C','D']
cheese=spam
cheese[1]=42
print(spam)
print(cheese)
输出:
['A', 42, 'C', 'D']
['A', 42, 'C', 'D']
⑪copy模块的copy()和deepcopy()函数
import copy
spam=['A','B','C','D']
cheese=copy.copy(spam)
cheese[1]=42
print(spam)
print(cheese)
输出:
['A', 'B', 'C', 'D']
['A', 42, 'C', 'D']
copy()函数,相当于建立了一个新的链表,能独立于第一个链表修改
如果要复制的链表中包含了链表,那么使用deepcopy()函数可以用来同时复制内部的链表。
'''
好啦,就先到这里啦ヾ(◍°∇°◍)ノ゙
'''
《Python编程快速上手——让繁琐的工作自动化》读书笔记3相关推荐
- 《人人都是产品经理》第四章读书笔记及读后感作文2400字
<人人都是产品经理>第四章读书笔记及读后感作文2400字: 最近一直在忙别的学习,以至于好久没有更新公众号了,也好久没有写读书笔记了.<人人都是产品经理>这本书其实早在一个月前 ...
- 《营销5.0后互联网时代的企业战略营销》读书笔记
文章目录 前言 营销 1.0 到营销 5.0 的发展路径 CIDR 模型 小结 前言 怀着对"营销"继续探索的心情,今年3月份完成了<营销5.0>的阅读,读本书的初衷是 ...
- 《互联网+:小米案例版》的读书笔记
读书笔记 摘自<互联网+:小米案例版刘润> 互联网+:小米案例版刘润 序篇 创业方法论之变 雷军反复强调的"顺势而为",以及"站对了风口,猪都能飞起来&quo ...
- 互联网产品经理(PM)的工作内容和职责
互联网产品经理的角色和职责在不同的互联网公司会存在一定差异,但是一些关键职责是任何一个产品经理都应承担的,下面我们按照产品阶段将互联网产品经理的职责整理为一下五个方面: 一.市场调研及用户研究 即研究 ...
- 一组漫画告诉你,互联网产品经理是什么概念
一.什么是产品经理 1. 1 什么是产品 产品是满足用户需求,被使用和消费的任何东西.包括有形的物品和无形的服务. 在了解产品经理之前,先来了解一下什么是产品.产品充斥在我们生活中的方方面面.鞋子.手 ...
- 《修炼之道:互联网产品从设计到运营》荣获“2012最受读者喜爱的IT人文类图书奖”!
<修炼之道:互联网产品从设计到运营>获得51CTO 主办的"2012最受读者喜爱的IT人文类图书奖",http://t.cn/zjjaXNo! 如何在寸土寸金的首页上使 ...
- 互联网产品的交互设计方法
目前交互设计在互联网产品中的应用状况 "交互设计可以提高产品可用性."在国内的互联网行业中,建立在这个认识基础上,交互设计得到了普遍的接受."产品设计开始的时候应该先交互 ...
- 为什么互联网能创造商业奇迹——我的互联网产品观
作者 网易·崔晓宇 互联网的出现突破了时间.地域的局限性,它使信息可以更快的速度传播到更广的范围,从时间和空间维度上看形成了真正的信息流.高效的流动让信息与生俱来的价值属性得以提升.我认为信息已经 ...
- 互联网产品的定义及分类
产品类型 产品是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品.无形的服务.组织.观念或它们的组合.产品一般可以分为三个层次,即核心产品.形式产品.延伸产品.核心产 ...
- 怎么做好互联网产品运营?
怎么做好互联网产品运营? 一.什么是运营? 从广义的角度上说,一切围绕着网站产品进行的人工干预都叫运营.所以某种程度上,我认为互联网产品公司只有3个业务部门:产品,技术,运营. 产品运营这个概念就=运 ...
最新文章
- 小米用户画像实战(附48页PPT)
- tomcat 中部署java web项目
- spring学习(15):required属性
- 共阳数码管段码表_C51编程7数码管显示原理
- java struct 简单案列_spring与struts简单整合案例
- sqlplus可以连接plsql连接不上_Gee引擎配置微端不更新,连接不上,尝试重新连接的解决方法...
- MVC利用URLRoute实现伪静态后正真的静态html无法访问
- UVA - 1262 Password (注意空集的特殊情况)
- 对SMART法则的多种解释
- c语言char几个字节为什么,为什么在C语言中char是1个字节(Why char is of 1 byte in C language)...
- 重磅精品课程总有一门是你想要找的
- 党² - 李超线段树
- 工业相机和镜头选型技巧
- Adobe Photoshop CC 2018之ps磁性套索工具抠图(☆)
- 按照字符串长度大小进行升序排列
- ffmpeg实现视频实时动态时间水印
- 苏黎世联邦理工学院计算机科学系,苏黎世联邦理工大学专业设置
- 自动化构建:gitlab gitlab-run ,maven的缓存 和 gitea drone drone-run
- 计算机组成原理汇编语言设计实验,《计算机组成原理汇编语言程序设计》实验指导书.doc...
- draftsight的热补丁