吐血总结Python 【列表】知识点
时间:2020-05-29 18:16:27
收藏:0
阅读:52
列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
先来介绍一波常用的功能:
list01 = [‘runoob‘, 786, 2.23, ‘john‘, 70.2] list02 = [123, ‘john‘] print list01 print list02 # 列表截取 print list01[0] print list01[-1] print list01[0:3] # 列表重复 print list01 * 2 # 列表组合 print list01 + list02 # 获取列表长度 print len(list01) # 删除列表元素 del list02[0] print list02 # 元素是否存在于列表中 print ‘john‘ in list02 # True # 迭代 for i in list01: print i # 比较两个列表的元素 print cmp(list01, list02) # 列表最大/最小值 print max([0, 1, 2, 3, 4]) print min([0, 1]) # 将元组转换为列表 aTuple = (1,2,3,4) list03 = list(aTuple) print list03 # 在列表末尾添加新的元素 list03.append(5) print list03 # 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) list03.extend(list01) print list03 # 统计某个元素在列表中出现的次数 print list03.count(1) # 从列表中找出某个值第一个匹配项的索引位置 print list03.index(‘john‘) # 将对象插入列表 list03.insert(0, ‘hello‘) print list03 # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 print list03.pop(0) print list03 # 移除列表中某个值的第一个匹配项 list03.remove(1) print list03 # 反向列表中元素 list03.reverse() print list03 # 对原列表进行排序 list03.sort() print list03
常见的问题
1、
列表里 a 与 a[:] 不同。
我们可以通过函数 id() 来查看:
会发现得到的两个值不同。
简单来说,a[:] 是创建 a 的一个副本,这样我们在代码中对 a[:] 进行操作后,就不会改变 a 的值了。而若直接对 a 进行操作,那么 a 的值会收到一些操作的影响,如 append() 等。
2、
列表解析 List Comprehensions
表达式:[expression for iter_val in iterable if cond_expr] [expression]:最后执行的结果 [for iter_val in iterable]:这个可以是一个多层循环 [if cond_expr]:两个for间是不能有判断语句的,判断语句只能在最后;顺序不定,默认是左到右。
3、
>>> list4=[123,["das","aaa"],234] >>> list4 >>> "aaa" in list4 #in只能判断一个层次的元素 False >>> "aaa" in list4[1] #选中列表中的列表进行判断 True >>> list4[1][1] ‘aaa‘
高阶学习
列表和元组的区别是显然的:列表是动态的,其大小可以该标;而元组是不可变的,一旦创建就不能修改。
从细节上看,Python中的列表是由对其它对象的引用组成的连续数组。指向这个数组的指针及其长度被保存在一个列表头结构中。这意味着,每次添加或删除一个元素时,由引用组成的数组需要该标大小(重新分配)。
不幸的是,在普通链表上“代价很小”的其它一些操作在Python中计算复杂度相对过高。
- 利用 list.insert方法在任意位置插入一个元素——复杂度O(N)
- 利用 list.delete或del删除一个元素——复杂度O(N)
列表和元组
列表和元组的区别是显然的:
列表是动态的,其大小可以该标 (重新分配);
而元组是不可变的,一旦创建就不能修改。
实际上 列表里面的元素可以是任意的对象,并且列表中维护了一个指针数组,每个指针指向不同的对象。
相关文档
深入 Python 列表的内部实现:http://python.jobbole.com/82549/
[python]list, tuple, dictionary, set的底层细节:https://blog.csdn.net/siyue0211/article/details/80560783
Python列表:初学者应该懂得操作和内部实现:https://mp.weixin.qq.com/s/IkFak4iYYqW7u61P7eu22g
python学习笔记 – list内部实现:https://www.jianshu.com/p/cd75475168ae
从底层理解Python的执行:https://www.csdn.net/article/2015-05-28/2824795
原文:https://www.cnblogs.com/jackson669/p/12988679.html
评论(0)