python学习笔记(二)列表和元组

个人笔记,仅供参考

二、列表和元组

1、序列概述

python内置了多种序列,本章重点讨论其中最常用的两种:列表元组。另一种重要的序列是字符串。

列表和元组主要的不同在于,列表是可以修改的,而元组不行。所以列表适用于需要中途添加元素的情况,而元组适用于需要禁止修改的情况。

2、通用的序列操作

索引,切片,相加,相乘和成员资格检查

2.1索引

序列中的所有元素都有编号——从0开始递增。可以使用编号来访问各个元素

>>> greeting = 'hello'
>>> greeting[0]
'h'

tips:可以使用负数索引来访问倒数的元素,例如-1可以访问倒数第一个元素

对字符串也可以使用索引:

>>> 'Hello'[1]
'e'

或者函数调用返回序列,可以直接对其执行索引操作。

>>> fourth = input('Year: ')[3]
Year: 2005
>>> fourth
'5'

2.2切片

切片可以访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔

>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[3:6]
[4, 5, 6]

注意:前面索引是包含在切片内的而后面的索引不包含

可以使用一个索引来从头开始或者切到最后

>>> numbers[:6]
[1, 2, 3, 4, 5, 6]
>>> numbers[3:]
[4, 5, 6, 7, 8, 9, 10]

或者省略两个索引来复制整个序列

>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

切片操作时可以指定第三个参数——步长

>>> numbers[0:10:2]
[1, 3, 5, 7, 9]

默认的步长为1,这里改为了2,即隔一个元素取一个值

还可以设置负数步长,从右向左提取元素,但索引要反过来写

>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]

使用这种方法要注意索引

2.3序列相加

可以使用加法运算来拼接序列

>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'
'Hello,world!'
>>> [1,2,3] + 'world'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

注意:只有同类型的序列才可以相加

2.4、乘法

>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>> [42] *5
[42, 42, 42, 42, 42]
2.4.1、none、空列表和初始化

空列表是使用不包含任何内容的两个方括号表示的,如果要创建一个10个元素的列表,但没有什么内容,可以使用乘法创建

>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5成员资格

要检查特定的值是否包含在序列中,可使用运算符in

>>> permissions = 'rw'
>>> 'r' in permissions
True
>>> 'x' in permissions
False
2.5.1长度、最小值和最大值

使用内置函数lenminmax

>>> numbers = [100,34,678]
>>> len(numbers)
3
>>> min(numbers)
34
>>> max(numbers)
678

3、列表:python的主力

3.1、函数list

将参数拆成列表

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

注意:可以将任何序列作为list的参数

3.2、基本的列表操作

3.2.1、修改列表:给元素赋值
>>> x = [1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]
3.2.2、删除元素

使用del语句即可

>>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

del语句还可用于删除其他东西

3.2.3给切片赋值
>>> name = list('perl')
>>> name
['p', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['p', 'e', 'a', 'r']

由以上代码可知,可同时给多个元素赋值。切片赋值可将切片替换为长度与其不同的序列,如下:

>>> name = list('Perl')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']

使用切片赋值还可以在不替换原有元素的情况下插入新元素

>>> numbers = [1,5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]

这里,我“替换”了一个空切片,相当于插入了一个序列。可以使用相反的措施来删除切片

>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]

4、列表方法

4.1、append()

方法append可以将一个对象添加到列表末尾

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
4.2、clear

方法clear就地清空列表

>>> lst = [1,2,3]
>>> lst.clear()
>>> lst
[]
4.3、copy

方法copy复制列表。常规复制只是将另一个名称关联到列表,而copy则是创建副本

>>> a = [1,2,3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]

如上,常规方法会动原列表

>>> a = [1,2,3]
>>> b = a.copy()
>>> b[1]=4
>>> a
[1, 2, 3]
4.4、count

方法count计算指定的元素在列表中出现了多少次。

>>> x = [[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1
4.5、extend

用于同时将多个值附加到列表末尾,可将这些值组成序列当作参数

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

注意,常规的加法效果不一样

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]

这里a没有被修改

4.6、index

方法index在列表中查找指定值第一次出现的索引

>>> knights = ['we','are','the','knights','who','say','ni']
>>> knights.index('who')
4

搜索列表中没有的值会报错

4.7、insert

方法insert用于将一个对象插入列表

>>> numbers = [1,2,3,4,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 4, 5, 6, 7]
4.8、pop

pop从列表中删除一个元素,并返回这一元素。

>>> x = [1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]
>>> x = [1,2,3]
>>> x.append(x.pop())
>>> x
[1, 2, 3]
4.9、remove

方法remove用于删除第一个为指定值的元素

>>> x = [1,2,3,4,5]
>>> x.remove(1)
>>> x
[2, 3, 4, 5]
4.10、reverse

方法reverse按相反的顺序排列列表中的元素

>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
4.11、sort

sort用于对列表就地排序,会对原来的列表进行修改。

>>> x = [4,6,2,1,7,9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

为获取排序后的列表的副本,使用函数sorted

>>> x = [4,6,2,1,7,9]
>>> y = sorted(x)
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

这个函数可用于任何序列,但总是返回一个列表

>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']

5、元组:不可修改的序列

>>> 1,2,3
(1, 2, 3)

如你所见,元组用圆括号括起。

注意:即使只有一个值,也要使用逗号

函数tuple可以将一个序列转换为元组。

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

6、小结

函数描述
len(seq)返回序列的长度
list(seq)将序列转换为列表
max(args)返回序列或一组参数中的最大值
min(args)返回序列或一组参数中的最小值
reversed(seq)让你能反向迭代序列
sorted(seq)返回一个有序列表,其中包含指定序列的所有元素
tuple(seq)将序列转换为元组

列表和元组都是python开发中使用频繁的序列,此内容需完全掌握。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值