您的位置:首页 > 编程语言 > Python开发

《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第4章 列表】

2018-03-02 12:40 1161 查看
 

1.  列表数据类型

“列表”是一个值,格式形如:['cat', 'bat', 'rat', 'elephant'](左方号开始,又方号结束;列表中的值也成为“表项”,“表项”用逗号分隔)

1)  用下标取得列表中的单个值

列表中的元素可以用下标获取。对于下标,有如下规则:
a)     下标从0开始。
b)     如果使用的下标超出了列表中元素的个数,将会报IndexError错误。
c)     下标必须是整数,不能是浮点数,否则报TypeError错误。
示例:
spam = [['cat', 'bat'], [10, 20, 30, 40,50]]
>>> spam = [['cat', 'bat'], [10,20, 30, 40, 50]]
>>> spam[0]
['cat', 'bat']
>>> spam[0][1]
'bat'
>>> spam[1][4]
50

2)  负数下标

负整数也可以作为下标,-1表示列表中最后一个元素,-2表示列表中倒数第二个元素,以此类推。
示例:
spam = [['cat', 'bat'], [10, 20, 30, 40,50]]
>>> spam = [['cat', 'bat'], [10,20, 30, 40, 50]]
>>> spam[-1][-1]
50

3)  利用切片取得子列表

使用下标可以取得列表的一个元素,而使用切片则可以取得列表的多个元素。列表的格式形如:spam[ a: b],a表示开始标,b表示结束标,但是不包括b。
示例:
>>> spam = ['cat', 'bat', 'rat','elephant']
注:
a)     第一个下标如果省略,默认从0开始;第二个下标如果省略,默认使用列表的长度。
>>> spam[:2]
['cat', 'bat']
>>> spam[1:]
['bat', 'rat', 'elephant']
>>> spam[:]
['cat', 'bat', 'rat', 'elephant']
b)     如果开始标和结束表都不在范围则返回空列表[]。
>>> spam = ['cat', 'bat','rat', 'elephant']
>>> spam[9:16]
[]
c)     如果切片倒着取,结果是空列表[]。如:
    >>> spam = ['cat', 'bat', 'rat','elephant']
>>> spam[3:1]
[]

4)  用 len()取得列表的长度

len()函数能统计列表元素的个数。示例:
>>> spam = ['cat', 'dog', 'moose']
>>> len(spam)
3

5)  用下标改变列表中的值

示例:
>>> spam = ['cat','bat','rat','elephant']
>>> spam[2] = "mouse"
>>> spam
['cat', 'bat', 'mouse','elephant']

6)  列表连接和列表复制

列表的连接使用:+ ,列表的复制使用:*。示例:
>>> [1, 2, 3] + ['A', 'B', 'C']
[1, 2, 3, 'A', 'B', 'C']
>>> ['X', 'Y', 'Z'] * 3
['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y','Z']

7)  用 del 语句从列表中删除值(索引)

del语句用于删除指定下标的值,被删除值后面的值都将向前移动一个下标。示例:
>>> spam = ['cat','bat','rat','elephant']
>>> del spam[0]
>>> spam
['bat', 'rat', 'elephant']

2.  使用列表

1)  列表用于循环

示例:
>>> spam =['cat','mat','rat','elephant']
>>> for i in range(len(spam)):
       print('Index' + str(i) + ' in spam is ' + spam[i])
Index 0 in spam is cat
Index 1 in spam is mat
Index 2 in spam is rat
Index 3 in spam is elephant

2)  in 和not in 操作符

可以使用in和not in 判断一个值是否在某个列表中,结果返回一个布尔值。示例:
>>> spam =['cat','mat','rat','elephant']
>>> 'cat' in spam
True
>>> 'cat' not in spam
False

3)  多重赋值技巧

用列表一次性为多个变量复制。示例:
>>> cat = ['fat','black','loud']
>>> size, color, disposition = cat
>>> size
'fat'

3.  增强的赋值操作



+=操作符也可以完成字符串和列表的连接,*=操作符可以完成字符串和列表的复制。

4.  方法

方法和函数是一回事。只是它是调用在一个值上。

1)  用 index()方法在列表中查找值

给列表index()方法传入一个值,如果值在列表中存在,则返回对应的下标,如果不存在,则返回ValueError。示例:



2)  (列表特有)用 append()和 insert()方法在列表中添加值

append()方法,将参数添加到列表的末尾。示例:
>>> spam =['cat','mat','rat','elephant']
>>>spam.append("chicken")
>>> spam
['cat', 'mat', 'rat', 'elephant','chicken']
insert()方法,可以将参数添加到列表的指定位置,原位置的值将会向后移动。示例:
>>> spam = ['cat', 'dog', 'bat']
>>> spam.insert(1, 'chicken')
>>> spam
['cat', 'chicken', 'dog', 'bat']
a)     append()和insert()方法是列表方法,只能在列表上调用。
b)     如果insert()方法插入的索引超过了列表的长度,那么会直接追加在最后面或者最前面。
示例:
>>> spam =['cat','mat','rat','elephant']
>>>spam.insert(9,"goose")
>>> spam
['cat', 'mat', 'rat', 'elephant','goose']
>>> len(spam)
5

3)  用 remove()方法从列表中删除值(值)

给remove()方法传一个值,这个值将会从列表中删除。示例:
>>> spam =['cat','mat','rat','elephant']
>>> spam.remove("cat")
>>> spam
['mat', 'rat', 'elephant']
1)     如果值不存在,那么将导致ValueError。
2)     如果该值在列表中出现多次,那么只有第一次出现的会被删除。

4)  用 sort()方法将列表中的值排序

a)     sort()方法只能对纯数值的列表或者纯字符串列表排序,排序的结果为正序。
b)     也可以指定reverse关键字的值为True,让sort()方法按逆序排序。
c)     sort()方法对字符串排序时,使用“ASCII 字符顺序”,而不是实际的字典顺序。如果要按字典顺序排序,需要将关键字参数key设置为str.lower

5.  类似列表的类型:字符串和元组

1)  可变和不可变数据类型

列表是“可变的”数据类型,它的值可以添加、删除或改变。但是,字符串是“不可变的”,它不能被更改。尝试对字符串中的一个字符重新赋值,将导致 TypeError 错误。如果需要修改,可以使用切片实现。

2)  元组数据类型

组与列表的主要区别还在于,元组像字符串一样,是不可变的。如果元组只有一个值,需要在这个值的后面加上一个逗号表面这是元组。示例:
>>> type(('hello',))
<class 'tuple'>
>>> type(('hello'))
<class 'str'>

3)  用 list()和 tuple()函数来转换类型

使用list()和tuple()函数可以将值转换为列表和元组。示例:
>>>list(("cat","mat","rat","elephant"))
['cat', 'mat', 'rat', 'elephant']
>>> tuple(['cat', 'mat', 'rat','elephant'])
('cat', 'mat', 'rat', 'elephant')

6.  引用

变量包含对列表值的引用,而不是列表值本身。但对于字符串和整数值,变量就包含了字符串或整数值。在变量必须保存可变数据类型的值时,例如列表或字典,Python 就使用引用。对于不可变的数据类型的值,例如字符串、整型或元组,Python变量就保存值本身。示例:
>>> spam = [0, 1, 2, 3, 4, 5]
>>> cheese = spam
>>> cheese[1] = 'Hello!'
>>> spam
[0, 'Hello!', 2, 3, 4, 5]
>>> cheese
[0, 'Hello!', 2, 3, 4, 5]

1)  传递引用

当函数被调用时,参数的值被复制给变量。对于列表(以及字典),这意味着变量得到的是引用的拷贝。

2)  copy 模块的 copy()和 deepcopy()函数

在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望这些变动影响原来的列表或字典。要做到这一点,Python 提供了名为 copy 的模块,其中包含 copy()和 deepcopy()函数。第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不只是复制引用。如果要复制的列表中包含了列表,那就使用 copy.deepcopy()函数来代替
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐