Python基础知识-pycharm版第三章学习笔记

发布于:2022-07-19 ⋅ 阅读:(263) ⋅ 点赞:(0)

1.在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。可以使用io.StringIO对象或array模块原地修改字符串:

2.复习基本运算符(比较预算符可以连用):

运算符优先级:位运算和算术运算>比较运算符>赋值运算符

3.在内存中,序列就是一块用来存放多个值的连续的内存空间,序列中存储的是整数对象的地址,而不是整数对象的值,常见的序列有字符串、列表、元组、字典、集合,比如一个整数序列[10,20,30,40],可以这样示意表示:

4.列表是内置可变序列,是包含多个元素的有序连续的内存空间,列表大小可变,根据需要随时增加或缩小,列表定义的标准语法格式:a = [10,20,30,40],其中,10,20,30,40 这些称为:列表a的元素,其中元素可以各不相同,可以是任意类型,比如:a = [10,20,'abc',True],列表对象的常用方法汇总如下:

 

5.创建列表:基本语法[]创建:

 

②list()创建,使用 list()可以将任何可迭代的数据转化成列表:

 

range()创建整数列表,可创建整数列表,语法格式为:range([start,] end[,step])

start参数:可选,表示起始数字。默认是 0 end 参数:必选,表示结尾数字。 step参数:可选,表示步长,默认为 1 python3 中range()返回的是一个 range 对象,而不是列表。我们需要通过 list()方法将其转换成列表对象

推导式生成列表,涉及到for循环和if语句:

 

6.当列表增加和删除元素时,列表会自动进行内存管理,但会导致涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。

append()方法,原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用:

+运算符操作,并不是真正的尾部添加元素,而是创建新的列表对象,将原列表的元素和新列表的元素依次复制到新的列表对象中,会涉及大量的复制操作,对于操作大量元素不建议使用:

 

extend()方法,将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象:

 

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

 

乘法扩展,使用乘法扩展列表,生成一个新列表,造成原列表元素的多次重复;

 

7.del删除,可以删除列表指定位置的元素,但其实是对元素进行复制和移动:

 

 

8.pop()方法删除,可删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素:

 

9.remove()方法删除,删除首次出现的指定元素,若不存在该元素抛出异常:

 

10.通过索引直接访问元素,索引的区间在[0,列表长度-1]这个范围,超过这个范围则会抛出异常:

 

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

 

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

 

13.len()返回列表长度,即列表中包含元素的个数:

 

14.成员资格判断,会使用更加简洁的in关键字来判断,直接返回True或False

 

15.切片slice操作可以快速提取子列表或修改,标准格式为:[起始偏移量start:终止偏移量end:[步长 step]],当步长省略时顺便可以省略第二个冒号,典型操作如下:

 

 

 

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

 

16.列表的遍历

for obj in listObj:

print(obj)

17.复制列表所有的元素到新列表对象可以通过如下简单方式,实现列表元素内容的复制:list1 = [30,40,50]  list2 = [] + list1

18.进行列表排序,只是修改原列表,不建新列表的排序:

建新列表的排序,通过内置函数 sorted()进行排序,这个方法返回新列表,不对原列表做修改:

 

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

 

打印输出b发现提示是:list_reverseiterator,是一个迭代对象,迭代对象 在第一次时已经遍历结束了,第二次不能再使用。

20.列表相关的其他内置函数汇总:max和min用于返回列表中最大和最小值;sum可对数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错:

 

21.列表中的元素也可以是列表,一维列表中含列表即为二维列表,将下表数据用列表展现出来,即为:

 

 

嵌套循环打印练习:

 

22.创建元组tuple,列表list和元组tuple之间的区别在于:

列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,没有增加元素、修改元素、删除元素相关的方法;

list()可以接收元组、字符串、其他序列类型、迭代器等生成列表,tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。

创建方法:

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

通过 tuple()创建元组,tuple(可迭代的对象)

 

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

 

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

25.用生成器推导式创建元组,生成器推导式使用小括号,生成的不是列表也不是元组,而是一个生成器对象,而列表推导式直接生成列表对象。可以将生成器对象转化成列表或者元组,也可以使用生成器对象的__next__()方法进行遍历,或者直接作为迭代器对象来使用。元素访问结束后,如 果需要重新访问其中的元素,必须重新创建该生成器对象:

 

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

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到