Python——序列 ( 上 ) [ 笔记 ]

本文介绍了Python中序列的概念,特别是列表的使用。包括列表的创建、增加元素(如append()、extend()、insert())、删除元素(del、pop()、remove())、访问和计数、切片操作以及排序方法。同时提到了列表与其他序列类型(如字符串)的相似操作,并讨论了列表在内存管理上的特点。
摘要由CSDN通过智能技术生成


032. 列表

序列

  • 序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。
  • 序列中存储的是整数对象的地址,而不是整数对象的值。
    pic3-1
  • Python中常用的序列结构有:字符串、列表、元组、字典、集合。

列表简介

  列表:用于存储任意数目、任意类型的数据集合。

  列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:

a = [10, 20, 30, 40]

  其中,10,20,30,40这些称为:列表a的元素。

  列表中的元素可以各不相同,可以是任意类型。比如:a = [10, 20, ‘abc’, True]

常用方法

方法要点描述
list.append(x)增加元素将元素x增加到列表list尾部
list.extend(aList)增加元素将列表aList所有元素加到列表list尾部
list.insert(index,x)增加元素在列表list指定位置index处插入元素x
list.remove(x)删除元素在列表list中删除首次出现的指定元素x
list.pop([index])删除元素删除并返回列表list指定位置index处的元素,默认是最后一个元素
list.clear()删除元素删除列表所有元素,并不是删除列表对象
list.index(x)访问元素返回第一个x的索引位置,若不存在x元素抛出异常
list.count(x)计数返回指定元素x在列表list中出现的次数
len(list)列表长度返回列表中包含元素的个数
list.reverse(x)翻转列表所有元素原地翻转
list.sort()排序所有元素原地排序
list.copy()浅拷贝返回列表对象的浅拷贝
  • Python的列表大小可变,根据需要随时增加或缩小。
  • 字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列。很多字符串的方法在列表中也有类似的用法,几乎一模一样。

033. 列表的创建

基本语法[]创建

  a = [10, 20, ‘huhu’, ‘Python’]
pic3-2

list()创建

  使用 list() 可以将任何可迭代的数据转换成列表。
pic3-3

range()创建整数列表

  range()可以帮助我们非常方便地创建整数列表,这在开发中极其有用。语句如下:

range([start,] end [,step])

  • start 参数:可选,表示起始数字,默认是0。
  • end 参数:必选,表示结尾数字。
  • step 参数:可选,表示步长,默认是1。
    pic3-4

推导式生成列表

  使用列表推导式可以非常方便地创建列表,在开发中经常使用。涉及for循环和if语句。
pic3-5


034. 列表元素的增加

  当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。

append()方法

  原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。
pic3-6

+运算符操作

  并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
pic3-7

extend()方法

  将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建列表对象。
pic3-8

insert()插入元素

  使用 insert()方法 可以将指定元素插入到列表对象的任意 指定位置 。这样会让位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后面元素的移动。
pic3-9

乘法扩展

  使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。
pic3-10
  适用于乘法操作的还有:字符串、元组。


035. 列表元素的删除

del删除

  删除列表 指定位置 的元素。实际是将指定位置的后一个元素依次向前挪动。
pic3-11

pop()方法

  pop() 删除并返回指定位置元素,如果未指定位置则默认操作列表的最后一个元素。
pic3-12

remove()方法

  删除 首次出现 的指定元素,若不存在该元素抛出异常。
pic3-13


036. 列表元素的访问和计数

通过索引直接访问元素

  我们可以通过索引直接访问元素。索引的区间在 [0,列表长度-1] 这个范围。超过这个范围则会抛出异常。
pic3-14

index()获得指定元素在列表中首次出现的索引

  index() 可以获取指定元素首次出现的索引位置。语法是:index(value, [start, [end]])。其中,start和end指定了搜索的范围。
pic3-15

count()获得指定元素在列表中出现的次数

  count() 可以返回指定元素在列表中出现的次数。
pic3-16

len()返回列表长度

  len() 返回列表长度,即列表中包含元素的个数。
pic3-17

成员资格判断

  判断列表中是否存在指定的元素,我们可以使用 count()方法 ,返回 0 则表示不存在,返回 大于0 则表示存在。但是,一般我们会使用更加简洁的 in关键字 来判断,直接返回 TrueFalse
pic3-18


037. 列表的切片操作

  切片是Python序列极其重要的操作,适用于列表、元组、字符串等等。
  切片slite操作可以让我们快速提取子列表或修改。标准格式为:

[起始偏移量start: 终止偏移量end [:步长step]]

典型操作(三个量为正数的情况) 如下:

操作和说明示例结果
[:] 提取整个列表[10,20,30][:][10,20,30]
[start:] 从start索引开始到结尾[10,20,30][1:][20,30]
[:end] 从头开始直到end-1[10,20,30][:2][10,20]
[start: end] 从start到end-1[10,20,30,40][1:3][20,30]
[start: end: step] 从start提取到end-1,步长是step[10,20,30,40,50,60,70][1:6:2][20,40,60]

其他操作(三个量为负数的情况) 如下:

示例说明结果
[10,20,30,40,50][-3:]倒数三个[30,40,50]
[10,20,30,40,50][-4:-2]倒数第四个到倒数第二个(包头不包尾)[20,30]
[10,20,30,40,50][::-1]步长为负,从右到左反向提取[50,40,30,20,10]

  切片操作时,起始偏移量和终止偏移量不在 [0,字符串长度-1] 这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当做“长度-1”。

列表的遍历

for obj in listObj:
	print(obj)

pic3-19


038. 列表的排序

修改原列表,不创建新列表的排序

  • a.sort() 为升序排序
  • a.sort(reverse=True) 为降序排序
  • random.shuffle(a) 为随机排序
    pic3-20

建新列表的排序

  我们可以通过内置函数 sorted() 进行排序,这个方法返回新列表,不对原列表做修改。
pic3-21

reversed()返回迭代器

  内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数 reversed() 不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
pic3-22

列表相关的其他内置函数汇总

max和min

  用于返回列表中的最大值和最小值。
pic3-23

sum

  对数值型列表的所有元素进行求和操作,对非数值类列表运算则会报错。
pic3-24


039. 二维列表

  • 一维列表 可以帮助我们存储一维、线性的数据。
  • 二维列表 可以帮助我们存储二位、表格的数据。
    pic3-25
a=[
    ["张三","18","男","计算机专业"],
    ["李四","20","女","通信专业"],
    ["王五","19","男","网络专业"],
    ]

# 嵌套循环打印二维列表的所有数据
for m in range(3):   # m为行数
    for n in range(4):   # n为列数
        print(a[m][n],end = "\t")   # 以制表符\t结束
    print()   # 打印完一行,换行

运行结果:
pic3-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值