python 编程效率:列表(list)生成和删除

生成

生成的方法有以下6种:append,+=[],[循环],list(),extend,insert。

删除

删除的方法有3种,分别是remove,pop和del。其中remove和pop是list的方法,而del是内置的方法。需要特别注意的是,使用循环删除需要倒序,就是从最后一个开始处理。因为如果是正序,删除列表元素之后,列表的长度发生了变化,会导致下标越界。而且删除的元素也可能不是想要的元素。

代码

import line_profiler
import sys

def append(n):
    a = []
    for i in range(n):
        a.append(i)
def pe(n):
    a = []
    for i in range(n):
        a += [i]
def one(n):
    a = [i for i in range(n)]
def uselist(n):
    a = list(range(n))
def extend(n):
    a = []
    for i in range(n):
        a.extend([i])
def insert(n):
    a = []
    for i in range(n):
        a.insert(-1, i)
def remove(L):
    n = len(L)
    for i in range(n-1,-1,-1):
        L.remove(L[i])
def pop(L):
    n = len(L)
    for i in range(n-1,-1,-1):
        L.pop(L[i])
def delete(L):
    n = len(L)
    for i in range(n-1,-1,-1):
        del L[i]
def main():
    n = 10**3
    list1 = list(range(n))
    list2 = list(range(n))
    list3 = list(range(n))
    append(n) #append
    pe(n) #+=[i]
    one(n) #[]
    uselist(n) #list
    extend(n) #extend
    insert(n) #insert
    remove(list1)
    pop(list2)
    delete(list3)
profile = line_profiler.LineProfiler(main)
profile.enable()
main()
profile.disable()
profile.print_stats(sys.stdout)

结果

在这里插入图片描述

生成列表效率

使用list()方法的最快,其次是使用[循环]模式。+=[]比append,insert和extend要快上一些。

删除列表效率

删除中最快的是内置方法del,估计是调用c程序的问题。而pop要快于remove,估计是内部实现方法不同导致的。因为remove是删除的数值,估计在内部实现的时候用到了查找数值。而pop是删除对应的下标,会速度更快。

总结

生成列表使用list()效率最高,删除使用del方法最快。删除需要倒序进行。

猜你喜欢

转载自blog.csdn.net/weixin_42272768/article/details/126528850