3.1.3 List列表 (基础篇)

3.1.3 List 列表

Python 中可以通过组合一些值得到多种 复合 数据类型。其中最常用的 列表 ,可以通过方括号括起、逗号分隔的一组值(元素)得到。一个 列表 可以包含不同类型的元素,但通常使用时各个元素类型相同:

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]

和字符串(以及各种内置的 sequence 类型)一样,列表也支持索引和切片:


>>> squares[0]  # indexing returns the item
1
>>> squares[-1]
25
>>> squares[-3:]  # slicing returns a new list
[9, 16, 25]

还是和上次一样,在这里面解释一下什么是sequence 类型?

sequence – 序列
一种 iterable,它支持通过 getitem()
特殊方法来使用整数索引进行高效的元素访问,并定义了一个返回序列长度的__len__() 方法。内置的序列类型有 list、str、tuple和 bytes。注意虽然 dict 也支持 getitem() 和 len(),但它被认为属于映射而非序列,因为它查找时使用任意的 immutable 键而非整数。
collections.abc.Sequence 抽象基类定义了一个更丰富的接口,它在 getitem() 和 len()之外又添加了 count(), index(), contains() 和 reversed()。实现此扩展接口的类型可以使用 register() 来显式地注册。

所有的切片操作都返回一个包含所请求元素的新列表。 这意味着以下切片操作会返回列表的一个 浅拷贝:

>>> squares[:]
[1, 4, 9, 16, 25]

列表同样支持拼接操作:


>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

与 immutable 的字符串不同, 列表是一个 mutable 类型,就是说,它自己的内容可以改变:

>>> cubes = [1, 8, 27, 65, 125]  # something's wrong here
>>> 4 ** 3  # the cube of 4 is 64, not 65!
64
>>> cubes[3] = 64  # replace the wrong value
>>> cubes
[1, 8, 27, 64, 125]

解释一下mutable–可变类型,与immutable–不可变类型对应。

mutable – 可变
可变对象可以在其 id()保持固定的情况下改变其取值。将是一个固定的内容空间,不会更改内存地址。

你也可以在列表末尾通过 append() 方法 来添加新元素(我们将在后面介绍有关方法的详情):

>>> cubes.append(216)  # add the cube of 6
>>> cubes.append(7 ** 3)  # and the cube of 7
>>> cubes
[1, 8, 27, 64, 125, 216, 343]

给切片赋值也是可以的,这样甚至可以改变列表大小,或者把列表整个清空:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # replace some values
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # now remove them
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # clear the list by replacing all the elements with an empty list
>>> letters[:] = []
>>> letters
[]

内置函数 len() 也可以作用到列表上:

>>> letters = ['a', 'b', 'c', 'd']
>>> len(letters)
4

也可以嵌套列表 (创建包含其他列表的列表), 比如说:

>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'

到这里就结束了吗?

这还没有完,接下来会更加精彩!

我们先可视再化理解一下List列表
首先还是要搞清楚List列表的原理,与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
通过索引列表可以进行截取、组合等操作。
在这里插入图片描述

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[0] )
print( list[1] )
print( list[2] )

结果:

red
green
blue

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
在这里插入图片描述

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[-1] )
print( list[-2] )
print( list[-3] )

结果:

black
white
yellow

使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符,如下所示:
在这里插入图片描述

nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(nums[0:4])

结果:

[10, 20, 30, 40]

List所包含的各种方法

序号方法解释参数返回值
1list.append(obj)方法用于在列表末尾添加新的对象。obj – 添加到列表末尾的对象该方法无返回值,但是会修改原来的列表。
2list.count(obj)统计某个元素在列表中出现的次数。obj – 列表中统计的对象。返回元素在列表中出现的次数
3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)seq – 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾该方法没有返回值,但会在已存在的列表中添加新的列表内容。
4list.index(x[, start[, end]])从列表中找出某个值第一个匹配项的索引位置x-- 查找的对象。start-- 可选,查找的起始位置。end-- 可选,查找的结束位置。该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
5list.insert(index, obj)将对象插入列表index – 对象obj需要插入的索引位置。obj – 要插入列表中的对象。该方法没有返回值,但会在列表指定位置插入对象。
6list.pop([index])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值index – 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。该方法返回从列表中移除的元素对象。
7list.remove(obj)移除列表中某个值的第一个匹配项obj – 列表中要移除的对象。该方法没有返回值但是会移除列表中的某个值的第一个匹配项。
8list.reverse()反向列表中元素该方法没有返回值,但是会对列表的元素进行反向排序。
9list.sort( key=None, reverse=False)对原列表进行排序key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。该方法没有返回值,但是会对列表的对象进行排序。
10list.copy()清空列表返回复制后的新列表。
11list.clear()复制列表,浅拷贝无返回值,但该列表清空。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小叶柏杉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值