吐血总结Python 【列表】知识点

时间:2020-05-29
本文章向大家介绍吐血总结Python 【列表】知识点 ,主要包括吐血总结Python 【列表】知识点 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

列表

序列是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