データ構造のリスト

6736 ワード

リストアクション
基礎データ構造の中で、リストは最も基礎の1つのデータ構造として体現して、1つのプログラムの中で効率を決定する肝心な核心要素はデータ構造とデータアルゴリズムで、両者は共に*時間の複雑度のタイプを決定して、そのため万丈のビルは平地から、最も基礎的なリストの操作とその時間の複雑度を分析することから始めます
リスト生成
メソッド1:リスト付与lis=[]メソッド2:リスト重畳リスト重畳注意,重畳は反復可能オブジェクトlisである.append()メソッド3:リスト加算lis.+方法4:リストジェネレータlis=[x for x in range(1100)]方法5:リスト生成関数lis=list(range(1100))
一般的な操作
list.append()
 -         
 -     
list.extend()
 -   **     ** ,range() []
 -     
list.insert(index, object)
 -         
 -     
list.remove(value)
 -                 
 -     
list.pop(index)
 -               
 -     
list.reverse()
 -       
 -     
list.+
 -            
 -      

時間効率の検証
コードの結果に基づいてテストします.コードは次のとおりです.
#!/bin/python3
#-*- coding: UTF-8 -*-
import datetime
#test time about list.append
start1 = datetime.datetime.now()
def t1():
    lis = []
    for i in range(1,10001):
        lis.append(i)
    return lis
print(t1())
deltat1 =(datetime.datetime.now() - start1).total_seconds()

#test time about list + list
start2 = datetime.datetime.now()
def t2():
    lis = []
    for i in range(1,10001):
        lis += [i]
    return lis
print(t2())
deltat2 =(datetime.datetime.now() - start2).total_seconds()

#test time about list Comprehensions
start3 = datetime.datetime.now()
def t3():
lis = [i for i in range(1,10001)]
    return lis
print(t3())
deltat3 =(datetime.datetime.now() - start3).total_seconds()

#test time about list() function
start4 = datetime.datetime.now()
def t4():
    lis = list(range(1,10001))
    return lis
print(t4())
deltat4 =(datetime.datetime.now() - start4).total_seconds()

#test time about list.extend
start5 = datetime.datetime.now()
def t5():
    lis = []
    for i in range(1,10001):
        lis.extend([i])
    return lis
print(t5())
deltat5 =(datetime.datetime.now() - start5).total_seconds()

#test               

start6 = datetime.datetime.now()
def t6():
    lis = []
    for i in range(1,1000001):
        lis.append(i)
print(t6())
deltat6 =(datetime.datetime.now() - start6).total_seconds()
start7 = datetime.datetime.now()
def t7():
    lis = []
    for i in range(1,1000001):
        lis.insert(0,i)
print(t7())
deltat7 =(datetime.datetime.now() - start7).total_seconds()
#print time
print('list.append time : {}'.format(deltat1))
print('list.+ list time : {}'.format(deltat2))
print('list.compre time : {}'.format(deltat3))
print('list.list() time : {}'.format(deltat4))
print('list.extend time : {}'.format(deltat5))
print('                ')
print('list.     time : {}'.format(deltat6))
print('list.     time : {}'.format(deltat7))

実行構造は次のとおりです.
list.append time : 0.01786
list.+ list time : 0.003997
list.compre time : 0.002984
list.list() time : 0.004476
list.extend time : 0.004189
                
list.     time : 0.083354
list.     time : 274.047424

まとめ
リストの操作ではリストジェネレータとリストの重ね合わせ効率が比較的良く、リストに要素を追加すると、リスト後から追加するのがカラムヘッダより挿入効率が比較的よい