Python 3——内蔵データ構造:list、tuple

83576 ワード

内蔵データ構造(変数タイプ)
  • list
  • set(詳細はpython-データタイプを参照)
  • dict(詳細はpython-データタイプを参照)
  • tuple
  • リスト
  • 順序の数字の組み合わせ
  • 作成リスト
  • 空リスト
  • l1=[]   #         
    print(type(l1))
    print(l1)
    l2=[100]  #         
    print(type(l2))
    print(l2)
    l3=[2,5,5,8,1,3]   #         
    print(type(l3))
    print(l3)
    l4=list()   #       
    print(type(l4))
    print(l4)<class 'list'>
    []
    <class 'list'>
    [100]
    <class 'list'>
    [2, 5, 5, 8, 1, 3]
    <class 'list'>
    []
    Process finished with exit code 0
    
    リストの一般的な操作1
  • アクセス
  • は、下付き操作(インデックス)
  • を使用する.
  • リストの位置は0から開始されます.(規定リストの最後の下位が−1と表示されます.)
  • タイル分け操作
  • はリストを任意のセグメントで切り取る
  • を行う.
  • list[:](番号を付ける前からコロンにかけての範囲ですが、コロン後の数字は取れません)(コロンの前後は空いています.前は空いています.位置0から始まります.後は空です.最大数を加算します.つまり最後のデータを切り取ります.)
  • list[:](2番目のコロンは成長幅を表し、デフォルトの成長幅は1であり、すなわち1つの成長であり、この数がマイナスの場合は右から左に順番を示す)
  • #      
    l=[2,3,5,4,1,6]
    print(l)
    print(l[4])  #      
    print(l[2:4])   #          
    print(l[ :5])  #          
    print(l[2:])  #           
    print(l[ : :2])  #            2
    print(l[-2:-5])  #                    ,                  
    print(l[-5:-2])
    print(l[-2:-5:-1])  #       ,          ,            [2, 3, 5, 4, 1, 6]
    1    #      
    [5, 4]    #          
    [2, 3, 5, 4, 1]    #          
    [5, 4, 1, 6]   #           
    [2, 5, 1]    #            2
    []
    [3, 5, 4]
    [1, 4, 5]
    Process finished with exit code 0
    
    スライス操作は新しいリストを生成することです.
  • は、関数IDを内蔵し、変数またはデータの一意決定番号
  • を表示する.
    l=[2,5,3,8,4,6]
    ll=l[:]
    l[1]=100
    #l   ll        
    print(id(l))
    print(id(ll))
    print(l)
    print(ll)287737405960
    287737406024
    [2, 100, 3, 8, 4, 6]
    [2, 5, 3, 8, 4, 6]
    Process finished with exit code 0
    
    リスト操作2
  • del削除コマンド
  • delの変数の後、この変数は
  • を使用できなくなります.
    #del  
    l=[2,5,3,8,4,6]
    print(id(l))
    del l[2]
    print(id(l))
    print(l)770037604872
    770037604872    #  del           list,       
    [2, 5, 8, 4, 6]
    Process finished with exit code 0
    
  • リスト加算
  • カナダを使って2つのリスト
  • を接続します.
    #      
    a=[1,2,3,4]
    b=[5,6,8]
    c=['a', 'b', 'c']
    d=a+b+c
    print(d)[1, 2, 3, 4, 5, 6, 8, 'a', 'b', 'c']
    Process finished with exit code 0
    
  • リスト数乗
  • リストは直接整数と乗算され、nリストを連結することに相当します.
  • #      
    a=[1,2,3,4]
    b=a*3
    print(b)[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
    Process finished with exit code 0
    
  • メンバー資格演算
  • は、1つの要素がリスト内にあるかどうかを判断する
  • である.
    a=[1,2,3,4]
    b=3
    c=b in a
    print(c)True
    
  • リストの巡回
  • for
  • while
  • #      :
    a=[1,2,3,4]
    for i in a:
        print(i)
    b=['i love sunyue']
    for i in b:
        print(i)
    print("#"*20)
    
    
    #   while  
    l=len(a)
    n=0  #n       
    while n<l:
        print(a[n])
        n += 11
    2
    3
    4
    i love sunyue
    ####################
    1
    2
    3
    4
    Process finished with exit code 0
    
  • 二層リストサイクル
  • #a     ,      
    a=[["one",1],["two",2],["three",3]]
    for k,v in a:
        print(k,"---",v)
    
    
    
        :
    one --- 1
    two --- 2
    three --- 3
    Process finished with exit code 0
    
    リストの内容:list content
  • 簡単な方法でリスト
  • を作成します.
    # for  
    a=[x for x in range(1,6 )]
    b=[i for i in a]  #  a       ,     b 
    print(b)
    c=[i*10 for i in a]   # a        10 ,      c 
    print(c)
    d=[m for m in a if m % 2 ==0]   #  : a          d 
    print(d)
    f=[m+n for m in a for n in b]   #     for    ,            
    print(f)[1, 2, 3, 4, 5]
    [10, 20, 30, 40, 50]
    [2, 4]
    [2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9, 6, 7, 8, 9, 10]
    Process finished with exit code 0
    
  • いくつかの余談
  • #        
    #       ,      ,                   
    #      ,         ,                ,              
    def a(n):
        n[2]=300
        print (n)
        return None
    
    def b(n):
        n += 100
        print (n)
        return None
    
    an=[1,2,3,4,5,6,7]
    bn=9
    
    print(an)
    a(an)  #  ,           
    print(an)
    
    print(bn)
    b(bn)   #  ,          ,         
    print (bn)[1, 2, 3, 4, 5, 6, 7]
    [1, 2, 300, 4, 5, 6, 7]
    [1, 2, 300, 4, 5, 6, 7]
    9
    109
    9
    
    リストの関数について
    len():リストの長さを表します.
    cmp(list 1,list 2):2つのリストの要素を比較します.
    max():リストの最大値を表します(同じ道理でminもあります)
    list():他の形式のデータをlistに変換する(前提は変換可能)
    zip():シーケンスの要素を順番にペアリングして一つのタプルを構成し、これらのタプルを新しいシーケンスに配置します.
  • zip()関数はzipタイプを返します.list()関数で変換する必要があります.
    names = ['   ', '   ', '   ', '   ']
    books = ['   ', '    ', '   ', '   ']
    times = ['1501 -1582 ', '1330 —1400 ', '1296 —1370 ', '1715 -1763 ']
    books_info = zip(names, books, times)
    print(list(books_info))
    
    #   :[('   ', '   ', '1501 -1582 '), ('   ', '    ', '1330 —1400 '), ('   ', '   ', '1296 —1370 '), ('   ', '   ', '1715 -1763 ')]
    
    apped():一つの内容を挿入し、末尾に追加することを表します.
    sort():リスト要素を並べ替える
    index(x):最初のx要素のインデックス値を返します.
    a = [i for i in range(1,5)]
    print(a)
    a.append(100)
    print(a)[1,2,3,4]
    [1,2,3,4,100]
    
    insert():指定位置挿入を表します.
    括弧の中で2つの値を定義する必要があります.一つは位置の下付きを表します.一つは挿入値indexを表します.
    a = [i for i in range(1,5)]
    print(a)
    a.insert(2,50)
    print(a)[1, 2, 3, 4]
    [1, 2, 50, 3, 4]
    
    del削除:インデックス(要素の位置)から削除します.
    str=[1,2,3,4,5,2,6]
    del str[1]	#     1   
    print(str)
    [1, 3, 4, 5, 2, 6]
    
    str=[0,1,2,3,4,5,6]
    del str[2:4] #    2     ,  4      (         )
    print(str)
    [0, 1, 4, 5, 6]
    
    pop():列の最後から一つの要素を取り出します.つまり最後の要素を取り出して、括弧の中にも指定した下付き文字を入力できます.
    remove(x):最初に現れた要素xをリストから削除します.
    クリア():クリア
    #       
    a = [i for i in range(1,10)]
    print(a)
    print(id(a))
    
    #pop    
    last_del=a.pop()   #  pop    
    print("       :",last_del)
    print(a)
    print(id(a))   #id  ,        
    b = a.pop(6)
    print("       6   :",b)
    print(a)
    print(id(a))
    
    #remove    
    a.remove(2)   #  a    2   
    print(a)
    print(id(a))   #id  ,        
    
    #clear    
    a.clear()   #      
    print(a)
    print(id(a))   #id  ,        [1, 2, 3, 4, 5, 6, 7, 8, 9]
    7229931770969
    [1, 2, 3, 4, 5, 6, 7, 8]
    722993177096
           67
    [1, 2, 3, 4, 5, 6, 8]
    722993177096
    [1, 3, 4, 5, 6, 8]
    722993177096
    []
    722993177096
    
    逆転リストの内容
    #       
    a = [i for i in range (1,10)]
    print(a)
    print(id(a))
    a.reverse()
    print(a)
    print(id(a))    #id  ,        [1, 2, 3, 4, 5, 6, 7, 8, 9]
    292435288584
    [9, 8, 7, 6, 5, 4, 3, 2, 1]
    292435288584
    
    exted拡張リストは、2つのリストのうちの1つを直接に他の後ろに連結します.
    #       
    a = [i for i in range (1,10)]
    b = [i for i in range (10,15)]
    print(a)
    print(id(a))
    a.extend(b)
    print(a)
    print(id(a))[1, 2, 3, 4, 5, 6, 7, 8, 9]
    62002192904
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
    62002192904
    
    count検索リストで指定された値または要素の個数
    #   count  
    a = [1,2,5,3,5,4,5,1,2,1]
    print(a)
    print(id(a))
    n= int(input("     :"))   #input      ,     int  
    b = a.count(n)
    print("   {}    :".format(n),b)[1, 2, 5, 3, 5, 4, 5, 1, 2, 1]
    6377531888725
       53
    
    コピー
    a = [1,2,3,4,5]
    print(a)
    b = a   #list  ,      ,    
    b[3] = 77
    print("  b   a   :",a)
    print("a ID   :",id(a))
    print("  b   b   :",b)
    print("b ID   :",id(b))
    print("*"*20)
    #    
    b = a.copy()
    print("a   :",a)
    print("a ID   :",id(a))
    print("b   :",b)
    print("b ID   :",id(b))  #copy  ID      
    print("*"*20)
    b[3] = 88
    print("  b   a   :",a)
    print("  b   b   :",b)[1, 2, 3, 4, 5]
      b   a   : [1, 2, 3, 77, 5]
    a ID   : 33841672
      b   b   : [1, 2, 3, 77, 5]
    b ID   : 33841672
    ********************
    a   : [1, 2, 3, 77, 5]
    a ID   : 33841672
    b   : [1, 2, 3, 77, 5]
    b ID   : 34328264
    ********************
      b   a   : [1, 2, 3, 77, 5]
      b   b   : [1, 2, 3, 88, 5]
    
  • ディープコピーと浅いコピーの違い
  • 深くコピーするには、特定のツール
  • が必要です.
    a0 = [10,20,30]
    a = [1,2,3,a0]
    b = a.copy()
    print(id(a[3]))
    print(id(b[3]))  #    b a0         
    a[3][2] = 666
    #   ,       
    #    ,b    a, b  a0       ,    b a0   ,a a0       
    print(a)
    print(b)4809224
    4809224
    [1, 2, 3, [10, 20, 666]]
    [1, 2, 3, [10, 20, 666]]
    
    元のグループ-tuple
  • タプルは、変更不可能なリスト
  • と見なされてもよい.
  • tupleは小さい括弧の中で書いて、元素の間はカンマで仕切ります.
  • タプルの要素は可変ではないが、listなどの可変オブジェクトを含むことができる.
  • タプルは辞書のキーとしてもいいし、セットの要素としてもいいですが、リストはできません.リストのタプルを含めてもいいです.
  • 元のグループの作成
    #     
    t = ()
    print(type(t))
    <class 'tuple'>
    #            
    t = (1,)
    print(type(t))
    print(t)
    <class 'tuple'>
    (1,)
    
    t = 1,
    print(type(t))
    print(t)
    <class 'tuple'>
    (1,)
    
    #         
    t = 1,2,3,4,5
    print(type(t))
    print(t)
    <class 'tuple'>
    (1, 2, 3, 4, 5)
    
    #        
    l = [1,2,3,4]
    t = tuple(l)
    print(type(t))
    print(t)
    <class 'tuple'>
    (1, 2, 3, 4)
    
    
    タプルの特性
  • はシーケンステーブルで、順序が良い
  • です.
  • タプルのデータ値はアクセスできます.
  • は変更できません.
  • タプルデータは、任意のタイプ
  • であってもよい.
  • とにかく、listのすべての特性は、修正できる以外は、元のグループが持っています.つまり、インデックス、スライス、シーケンス加算、相乗、メンバー資格操作などは全部同じです.
    ジェネレータ式
    gen = (2**i for i in range(8))  #         
    #            ,          
    print(gen)
    print((gen)) #     
    print(tuple(gen))
    
    
    gen = (2**i for i in range(8))
    print(next(gen))    #  next()         
    print(next(gen))
    for item in gen:    #  for           
        print(item,end = ' ')
    
    
    gen      : <generator object <genexpr> at 0x000001D43FF88E48>
    list(gen)[1, 2, 4, 8, 16, 32, 64, 128]
    tuple(gen)()124 8 16 32 64 128