【无标题】

 

 

 

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

8390ba32d07246eea2e93da5679788be.png

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

4802e769b9ff441c99469aaff8744283.png 

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

b4053831e69343518f636c7ac34a360f.png 

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

bde54b25456c48c59b3864f097855e16.png 

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

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

6c49fccc9a6c46c592474de71ca5065e.png

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

e2afdd933fb044fd995ef1a2a37cbc2c.png 

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

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

350658bfab10421f946cabad7cdd7bc2.png

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

312f8646b1c14e3196294b119904364d.png 

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

07e4ed7727fc494eb653fa69d62e3417.png 

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

 a89d949c98dc4a79b53ad3b083f37fb4.png

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

06e3f9652ba7444f83a7ff5c49916e63.png 

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

5005d97f97e04e58949c4bb215c86545.png 

13b74d1c381447eea5bb74976ff96db1.png 

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

824d628b4a494756be6ff3f9a06b6d00.png 

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

de9244c759c546b088ef29814948f78c.png 

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

980e9a98200a48368ad8872d87cae837.png 

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

5038b7e484934820a46c54edc56be3bf.png 

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

f180dc97ca9142778cad58a96a9ebb69.png 

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

dc51f219675e4495a1790a13f2deb650.png 

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

257f0739aaaa40f1a60ddddf49dcc886.png 

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

2a69ddcf4912470c844c9dfe0c21a0f2.png 

0eebb3a39d6d4e10b3100de9e3070b10.png 

aa2720b3a2f04f04bad4e90062046de8.png 

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

0ece49b3c3e34d7b904fdeb51a36bbd8.png 

16.列表的遍历:

for obj in listObj:

print(obj)

0a415ab30aa8432e90e71b5c8a7a5ae6.png

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

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

8cb84ecce3a540d088be2038954dc4f1.png

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

46d231aeb9eb4f84a0a4f278fc885fe7.png 

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

14c60a45166840a4ba92c561ae982742.png 

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

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

ef25054c86844071b87b7428e35ccfe1.png 

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

 ffe4203ea6da4b958f6591799f3297e0.png

cff81ceb372f4b66aae242ef9b7d026e.png 

c9404b71b5e041cf9d5ee771f9b48493.png

嵌套循环打印练习:

f2b8593e282943ebb5a8c2e35a20af5e.png 

77cb3172ed1e47df9fff98386ab6d093.png

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

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

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

创建方法:

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

fa4b6d9cb67044589f4cdd709ca0b9b9.png

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

941fda4fe2684ec4b8f6fcfad048c199.png 

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

231ad6edaeec433ba8e277a1a990e11a.png 

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

ad34afdd380240c388dea632ec14b052.png

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

a8522af3c55b4298a48d581ceb558db4.png 

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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值