Python中列表的内部工作

Python列表简介: Python列表 在内部表示为数组。使用的想法与 C++中矢量的实现 或者Java中的ArrayList。代价高昂的操作是在接近开始时插入和删除项目(因为所有东西都必须移动)。如果预分配的空间已满,则在末尾插入也会增加成本。 我们可以用python创建一个列表,如下所示。 例子:

null

Python3

list1 = [ 1 , 2 , 3 , 4 ]


我们可以通过指定的索引访问python中列表的每个元素。在python中,列表序列的起始索引是0,结束索引是(如果有N个元素)N-1。

图片[1]-Python中列表的内部工作-yiteyi-C++库

如上所示,数组列表也有从-N(如果列表中有N个元素)到-1的负索引。 在Python中查看列表的元素: 列表中的各个项目可以通过它们的索引进行访问,如下代码段所示。

Python3

list1 = [ 1 , 2 , 3 , 4 ]
# for printing only one item from a list
print (list1[ 1 ])
# to print a sequence of item in a list
# we use ':' value before this is starting
# and value after that tells ending of sequence
print (list1[ 1 : 4 ])
# accessing through negative index
print (list1[ - 1 ])


分配和访问数据: 为了创建一个列表,我们需要指定方括号“[]”内的元素,然后给它一个名称。每当您想要访问列表元素时,请使用此列表名称和要显示的元素索引。 列表中的每个元素都被分配了一个索引,在正索引中,我们的索引从0到列表的末尾,在负索引中,我们的索引从-N(如果元素为N)到-1。 如以上示例所示,访问元素的工作是手动的。我们还可以通过循环访问或分配元素。

Python3

# assigning elements to list
list1 = []
for i in range ( 0 , 11 ):
list1.append(i)
# accessing elements from a list
for i in range ( 0 , 11 ):
print (list1[i])


更新列表: 我们可以更新列表中已经分配的元素,也可以一次向列表中添加一个元素。甚至可以通过在当前列表中添加另一个列表来扩展列表。 上述任务可按如下方式执行。

Python3

list1 = [ 1 , 2 , 3 , 4 ]
# updating
list1[ 2 ] = 5
print (list1)
# appending
list1.append( 6 )
print (list1)
# extending
list1.extend([ 1 , 2 , 3 ])
print (list1)


注: append()和extend()是python中用于列表的内置方法。 删除列表中的元素: 我们可以利用del函数删除列表中的元素。在这种情况下,您需要指定元素的位置,该元素是该元素的索引,该元素将从列表中删除,索引将被更新。

图片[2]-Python中列表的内部工作-yiteyi-C++库

在上图中,索引2中的元素3已被删除,并且在该索引更新之后。

Python3

list1 = [ 1 , 2 , 3 , 4 , 5 ]
print (list1)
# deleting element
del list1[ 2 ]
print (list1)


操作的时间复杂性

活动 普通病例 摊销 最坏的情况
复制 O(n) O(n)
附加[1] O(1) O(1)
最后一击 O(1) O(1)
波普中间体 O(k) O(k)
插入 O(n) O(n)
获取项目 O(1) O(1)
固定项目 O(1) O(1)
删除项目 O(n) O(n)
迭代 O(n) O(n)
切块 O(k) O(k)
Del Slice O(n) O(n)
设定切片 O(k+n) O(k+n)
扩展[1] O(k) O(k)
分类 O(n日志n) O(n日志n)
O(nk) O(nk)
x英寸s O(n) O(n)
最小值,最大值 O(n) O(n)
获得长度 O(1) O(1)

资料来源: Python维基 Python列表及其操作。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享