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

 

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()函数来代替


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值