python女孩入门第三天_序列_列表和元组

序列

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

列表简介

列表:用来存储任意数目、任意类型的数据集合。
例:a = 【1,2,3】
a =[10,20,‘abc’,True]

列表对象常用的方法汇总
在这里插入图片描述
在这里插入图片描述
python的列表大小可变,根据需要随时增加或减小。
字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列。我们前面学习的很多字符串的方法,在列表中也是有类似的用法,几乎一模一样。害,天下内容一大套!!!

列表的创建

基本语法【】创建

a = [10,20,‘huzhuping’,‘hzp’]
a =[]
#创建一个空的列表对象

list()创建

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

range()创建整数列表

range()可以帮助我们非常方便的创建整数列表,这在开发中及其应用中很重要
range([start,] end[,step])
start参数:可选,表示起始数字。默认是0
end参数:必选,表示结尾数字
python3中range()返回的是一个range对象,而不是列表。我们需要通过list()方法将其转换成列表。

推导式生成列表(简介一下,放在for循环重点说)

在这里插入图片描述

列表元素的增加和删除

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

append()方法

原地修改列表对象,是真正的列表尾部添加新的元素,速度最快

a = [20,40]
a.append(40)
a
[20, 40, 40]

+运算符操作

上次也说到,并不是真正的尾部添加元素,而是创建新的列表对象。这样会涉及大量的赋值操作。

extend()方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象
在这里插入图片描述
还是原来的地址。而且添加的是列表

insert()插入元素

可以将指定的元素插入到列表对象的任意指定位置/但这样会让插入位置后面的所有元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。其中,涉及到移动的函数还有remove() pop() del()

a = [10,20,30]
a.insert(2,100)
a
[10, 20, 100, 30]

乘法扩展

跟字符串时候差不多类似

a = [10,20]
b = a*3
b
[10, 20, 10, 20, 10, 20]

列表元素的删除

del删除

删除列表指定位置的元素

a = [10,20,30]
del a[1]
a
[10, 30]

列表元素访问和计数

通过索引直接访问元素

我们可以通过索引直接访问元素
在这里插入图片描述

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

index()可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]]).
在这里插入图片描述

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

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

a = [10,20,30,40,50,20,30,20,30]
a.count(20)
3

len()返回列表长度

len()返回列表长度,也就是列表中有几个元素。

成员资格判断

判断列表中是否存在指定的元素。也可以用count(),不过没啥人用。

a = [10,20,30,40,50,20,30,20,30]
20 in a
True

100 not in a

切片操作

我们在前面学习字符串的时候,学习过。列表几乎也是一模一样。切片的格式如下:
切片slice操作可以让我们快速提取列表或修改。标准格式为:[起始偏移量 start终止偏移量 end[:步长 step]]
注意:当步长省略时顺便可以省略第二个冒号
在这里插入图片描述
其他操作(三个量为负数)的情况:
在这里插入图片描述
切片操作时,起始偏移量和终止偏移量不止在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于也会当作,终止偏移量大于长度-1 也会当成最后的那个长度。例如:
在这里插入图片描述

列表的遍历

在这里插入图片描述

列表排序

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

在这里插入图片描述

建立新列表的排序

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

a
[10, 40, 20, 30]

id(a)
2669860021704

a = sorted(a)
a
[10, 20, 30, 40]

id(a)
2669867274120

reversed()返回迭代器

reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
这个只能使用一次。

a = [20,30,10,20]
c = reversed(a)
c
<list_reverseiterator object at 0x0000026DA039BBA8>

list©
[20, 10, 30, 20]

只是空间上的翻转而已

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

max和min
sum*

多维列表

二维列表

一维列表可以帮助我们存储一维、线性的数据。【10,20,30,40】
二维列表可以帮助我们存储二维、表格的数据;例如如下表格:
在这里插入图片描述
代码:

a = [
[“高小一”,18,30000,“北京”],
[“高小二”,19,20000,“上海”],
[“高小三”,20,10000,“深圳”],
]

a
[[‘高小一’, 18, 30000, ‘北京’], [‘高小二’, 19, 20000, ‘上海’], [‘高小三’, 20, 10000, ‘深圳’]]

a[0]
[‘高小一’, 18, 30000, ‘北京’]

a[0][0]
‘高小一’

a[0][3]
‘北京’

内存结构图:
在这里插入图片描述

元组tuple

列表属于可变序列,元组属于不可变序列,也就是不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素的相关方法。
因此,我们只需要学习元组的创建和删除,元组中元素的访问和计数即可。
元组支持以下操作:
在这里插入图片描述

元组创建

1.通过()创建元组。小括号可以省略。
a = (10,20,30) 或者 a = 10,20,30
如果元组只有一个元素,则必须后面加逗号。这是因为解释器会把(1)解释为整数1,(1,)解释为元组。

a = (1)
type(a)
<class ‘int’>

a =(1,)
type(a)
<class ‘tuple’>

2.通过tuple()创建元组
tuple(可迭代对象)
总结:
tuple()可以接受列表、字符串、其他序列类型、迭代器等生成元祖。
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

元组的元素访问和计数

1.元组的元素不能修改
2.元组的元素访问和列表一样,只不过返回的仍然是元组。
3.列表关于排序的方法list.sort()是修改原列表对象,元组没有该方法。。如果对元组进行排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象。

zip

zip(列表1,列表2,……)将多个列表对应位置的元素组合成元组,并返回这个zip对象。

a = [10,20,30]
b = [50,60,40]
d = zip(a,b)
d
<zip object at 0x000001F77E50CFC8>

list(d)
[(10, 50), (20, 60), (30, 40)]

生成器推导式创建元组

从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的_next()_方法进行遍历吗或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
【操作】生成器的使用测试
在这里插入图片描述

元组总结

1元组的核心特点:不可变序列
2.元祖的访问和处理速度比列表快。
3.与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值