[]是个空列表,不包含任何值,类似于空字符串''。
4.1.1 用下标取得列表中的单个值
第一个值得下标为0 ...
如果使用的下标超出了列表中值的个数,Python将给出IndexError出错误
下标只能是整数,不能是浮点值。 否则引发TypeError
列表可以嵌套
4.1.2 负数下标
同样可以使用负整数下标
-1指的是列表中最后一个下标 -2 倒数第二个
4.1.3 利用切片取得子列表
切片可以从列表中取得多个值
spam[1:4]
在一个切片中,第一个整数是切片开始处下标。第二个是切片结束处下标,不会打印结束处的值。忽略第一个下标相当于使用0或列表的开始。
4.1.4 用len()取得列表的长度
spam['cat','sss','xxx']
len(spam)
3
4.1.5 用下标改变列表中的值
4.1.6 列表连接和列表复制
[1,2,3]+['xxx','yyy']
[1,2,3,'xxx','yyy']
[1,2,3]*2
[1,2,3,1,2,3]
4.1.7 用del语句从列表中删除值
spam=[1,2,3]
del spam[1]
spam
[2,3]
4.2.1 列表用于循环
for i in [0 ,1,2,3]:
print(i)
同样打印
0
1
2
3
这是因为range(4)的返回值是类似列表的值,列表认为它类似于[0,1,2,3],前面的for循环实际上是在循环执行它的子句,在每次迭代中,让变量一次设置为列表中的值。
类似列表是指技术上称为序列的数据结构。
常用 range(len(spam))
4.2.2 in和not in操作符
利用上述二者可以确定一个值是否在列表中。
1 in [1,2,3]
True
4.2.3 多重赋值技巧
cat=[1,2,3]
a,b,c=cat #a=1 b=2 c=3
变量的数目和列表长度必须严格相等 否则将给出ValueError 错误
4.3 增强的赋值操作
+= -= *= /= %=
4.4 方法
4.4.1 用index()方法在列表中查找值
不在列表中 就报ValueError 否则返回它的下标
4.4.2 用append()和insert()方法在列表中添加值
append()将参数添加到列表末尾,insert()方法可以在列表任意下标处插入一个值。 insert()方法第一个参数是新值的下标,第二个参数是要插入的新值
4.4.3 用remove()方法从列表中删除值
给remove()方法传入一个值,它将从被调用的列表中删除。
如果删除不存在的值 将引发ValueError 错误
如果出现多次,只有第一次出现的值会被删除。
知道下标用del() 知道值用remove()
不要记录返回值
4.4.4 用sort()方法将列表中的值排序
spam.sort()
默认从小到大,也可以指定spam.sort(reverse=True)让sort()按逆序排序
不要记录返回值
对字符串排序时,使用ASCII字符顺序
4.5 神奇8球和列表
在源代码中 列表时即可以跨越几行,没有看到结束方括号列表就没结束 可以不加续行字符
可以在行末使用续行字符\,此时缩进并不重要。
4.6 类似列表的类型 :字符串和元组
对列表的操作可以作于字符串 : 按下标取值,切片、用于for循环、用于len(),以及用于in和not in 操作符。
4.6.1 可变和不可变数据类型
改变一个字符串的正确方法是使用切片和链接
4.6.2 元组数据类型
除了两个方面,元组数据类型几乎和列表数据类型一样。首先,元组输入时用圆括号()而不是[]
元组和列表主要区别是元组像字符串一样是不可变的,不能让他们的值修改添加和删除。
如果元组中只有一个值,你可以在括号内该值后面跟上一个逗号 表明这种情况。
否则Python将认为,你只是在一个普通括号内输入了一个值。
type()函数将返回括号内值的类型
4.6.3 用list()和tuple()函数来转换类型
上述二者将返回传递给他们值的列表和元组版本。
4.7 引用
当你将列表赋给一个变量时,实际上是将列表的引用付给了该变量。引用是一个值,指向某些数据。列表引用是指向一个列表的值。字典也是如此。
4.7.1 传递引用
...
4.7.2 copy模块的copy()和deepcopy()函数
在处理列表和字典时,如果不希望传递引用可以使用copy模块中的copy()可以用来复制列表或字典这样的可变值。deepcopy()将同时复制他们内部的列表。
5.1 字典数据类型
字典是许多值的集合。但不想列表的小标,字典的索引使用许多不同的数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对
字典输入时带{}
mycat={'size':'fat','color':'gray'}
键是 ‘size’ ‘color’ 值是 ‘fat’,‘gray’
>>>mycat['size']
'fat'
字典也可以用整数作为键
5.1.1 字典和列表
不同于列表,字典中的表项是不排序的。因此 字典不能像列表那样切片。同时判断是否相等时,列表顺序必须相同,而字典不用。
尝试访问字典中不存在的键,将导致KeyError出错误信息
用 in关键字可以判断值是否作为键存在于字典中。
5.1.2 keys()、values()、和items()方法
有三个字典方法,它们将返回类似列表的值,分别对应于字典的键、值和键-值对。这些方法翻到会的值不少真正的列表,它们不能被修改,没有append()方法。但可以用于for循环。
5.1.3 检查字典中是否存在键或值
'name' in spam.keys() #spam.values() spam.items()
检查一个值是否是字典的键 可以用 in not in
5.1.4 get()方法
get()有两个参数: 要去的其值的键,以及如果该键不存在时,返回的备用值
如果不使用get()寻找没有的键时会报错,使用get()没找到值则会返回备用值。
5.1.5 setfault()方法
传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。
5.2 漂亮打印
如果程序中导入pprint模块,就可以使用pprint()和pformat()函数,它们将“漂亮打印”一个字典的字。
如果字典本身包含嵌套的列表或字典,pprint函数就特别有用。
如果希望得到漂亮打印的文本作为字符串而不是显示在屏幕上,就调用print.pformat()。
5.3 使用数据结构对真实世界建模
5.3.1 井字棋盘
5.3.2 嵌套的字典和列表
6.1.1 字符串字面量
6.1.2 双引号
字符串可以用双引号开始和结束,就像用单引号一样,好处就是字符串中可以使用单引号字符。
6.1.3 转义字符
\' 单引号 \" 双引号 \t 制表符 \n 换行符 \\ 倒斜杠
6.1.4 原始字符串
可以在字符串开始的引号前加上r,使它成为原始字符串。“原始字符串”将完全忽略所有的转义字符,打印出字符串中所有的倒斜杠。
6.1.5 用三重引号的多重字符串
多行字符串的起止是三个单引号或三个双引号 三重引号中的所有引号、制表符或换行,都被认为是字符串的一部分,单引号和双引号可直接使用。
6.1.6 多行注释
多行字符串常常用作多行注释
6.1.7 字符串下标和切片
下标从0开始 可以进行切片并储存在另一个变量中。
6.1.8 字符串的in和 not in 操作符
>>>'hello' in 'hello world'
True
6.2 有用的字符串方法
6.2.1 字符串方法 upper() lower() isupper()和 islower()
upper()和lower()分别返回一个全部为大写或小写的新的字符串
spam.lower()
spam.islower()
isupper()和islower()判断该字符串 至少有一个字符,并且所有字母都是大写或小写。返回bool类型的值。
6.2.2 isX字符串方法
isalpha() 如果只包含字母并且非空
isalnum() 如果只包含字母和数字 而且非空
isdecimal() 如果字符串只包含数字字符,并且非空
isspace() 如果字符串只包含空格、制表符和换行 并且非空
istitle() 如果字符串仅包含以大写字母开头、后面都是小写字母的单词。
6.2.3 字符串方法 startwith()和endwith()
如果他们所调用的字符串以该方法传入的字符串开始或结束,将返回True。
6.2.4 字符串方法 join()和split()
join的方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。返回鬼字符串由传入的列表中每个字符串连接而成。
注意 调用join()方法的字符串,被插入到列表参数中每个字符串的中间。
split()方法做的正好相反
他针对一个字符串调用,返回一个字符串列表。默认情况下,字符串按照各种空白字符分隔,也可以向split()方法传入一个分隔字符串,指定他按照不同的字符串分割。
常用split()方法是按照换行符分割字符串。
6.2.5 用rjust()、ljust()和center()方法对齐文本
rjust()和ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串。如果传入的值小于字符串值,此方法不会起作用,也可以传入一个值,作为空白区的填充。ljust()方法左对齐,rjust()方法右对齐,center()方法居中对齐。
6.2.6 用strip()、rstrip()和istrip()删除空白字符
有时候希望删除字符串左边、右边或两边的空白字符。
strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。
lstrip()或rstrip()方法将删除左边或右边的空白字符。
有一个可选的字符串参数,指定两边的哪些字符应该被删除,其中字符的顺序并不重要,都会删除。
6.2.7 用pyperclip模块拷贝粘贴字符串