python基础教程读书笔记--第二章列表和元祖

列表和元祖都属于序列的一种,列表可以修改,元祖不能修改。序列里面可以再包含序列。


所有序列的通用操作

索引从0开始,表示从左边开始的第一个,也可以从-1开始,表示最右边的第一个。

>>> mylist = "201526"
>>> mylist[3]
'5'
>>> mylist[-3]
'5'
>>> mylist[-2]
'2'


分片

分片就是提供两个索引做为边界,第一个索引的元素是包含在分片内的第二个是不包含在内的,也就是前闭后开,中间以冒号分隔

mylist[0:-1]
'20152'


更大的步长

步长就是在分片的基础上面再在后面加个步长,用冒号分开

>>> mylist[0:-1:2]
'212'


序列相加

序列相加,使用加运算符即可实现。

>>> mylist + "2334"
'2015262334'

>>> mylist + [1,2,3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'list' objects

序列相加必须是同种类型的序列


序列乘法

序列乘法就是用一个序列乘以数字x,原来的序列被重复x次

mylist*5
'201526201526201526201526201526'

None

None类比C或者C++的NULL,可以做为初始化时使用

>>> mylist=[None,None,None]
>>> mylist
[None, None, None]


成员资格

检查一个值是否在序列中,可以使用in运算符,返回值类型为布尔。

>>> None in mylist
True
>>> 1 in mylist    
False

长度,最小值,最大值

len返回序列中包含的元素数量,min 和max返回序列中最大和最小元素

>>> mylist=[1,2,3]
>>> max(mylist)   
3
>>> min(mylist)   
1

>>> len(mylist) 
3


列表

列表的各个元素通过逗号分隔,然后写在方括号里面。

list函数

字符串是个常亮,字符串本身不可以修改,但是通过字符串创建列表之后就可以修改了

list函数就可以实现这个功能,类比构造函数吧

>>> mylist=list("hello,world")
>>> mylist
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']

列表基本操作

元素赋值

使用列表名加上对应下标即可

>>> mylist[0]='H'
>>> mylist
['H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']

删除元素

del语句即可,格式为del 列表名[下标]

>>> del mylist[0]
>>> mylist
['e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']

分片赋值

使用序列分片的通用格式,然后赋值即可

>>> mylist[1:3] = "Ne"
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']

小技巧

>>> mylist[0:0]="ADD"
>>> mylist
['A', 'D', 'D', 'e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']

这样就可以等同于两个列表相加了,

那么删除则可以通过赋空值来实现

>>> mylist[0:3]=[]
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']

列表方法:

append  在列表的末尾添加新对象,可以是单个元素,也可以是一个列表。(序列里面可以再包含序列)

count 统计某个元素在列表里面出现的次数

extend 一次性追加另一个序列中的多个值

append和extend的区别如下:

>>> mylist.append(1)
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1]
>>> mylist.append(1,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> mylist.append([1,2])
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1, [1, 2]]
>>> mylist.extend([1,2])
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1, [1, 2], 1, 2]

index 用于获取列表某个值第一次出现的位置

insert 用于将对象插入到指定位置,insert没有那种类似extend的功能。

>>> mylist
[1, 2, 3]
>>> mylist.insert(2,"abcd")
>>> mylist
[1, 2, 'abcd', 3]
>>> mylist.insert(2,[9,8,7])
>>> mylist
[1, 2, [9, 8, 7], 'abcd', 3]

pop  移除列表最后一个元素

remove  移除列表里面第一个匹配的值。

reverse 列表元素反向存放

sort 对列表排序,注意的是内存已经修改,不是返回副本;sort可以使用自定义比较函数,

使用方式 列表名.sort(函数名) 跟STL的容器一样


元组

元祖是不可变序列

表示形式为:元素之间用逗号分开,用圆括号括起来。

>>> mylist=(1,)
>>> mylist
(1,)
>>> mylist=(2,)
>>> mylist[0]=3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment


tuple函数功能与list相同,把一个序列转换为元祖,如果序列是元祖,那么就原样返回,如果是列表,就转换格式。

>>> mylist=tuple((1,2,3,))
>>> mylist
(1, 2, 3)
>>> mylist=tuple([1,2,3,])
>>> mylist
(1, 2, 3)
>>> mylist=tuple([1,2,3]) 
>>> mylist
(1, 2, 3)


元祖存在的意义:

可以做为字典的key;可以做为函数的返回值



猜你喜欢

转载自blog.csdn.net/xiaoyilong2007101095/article/details/79140100