python学習のリスト


pythonの6つのシーケンスの組み込みタイプ
シーケンスはpythonの最も基本的なデータ構造で、シーケンスの各要素はすべて1つの数字を割り当てて、そのインデックス、1つ目は0で、2つ目は1で、順番に類推します;pythonの6つの組み込みシーケンスは、リスト、元祖、文字列、unicode文字列、bufferオブジェクト、xrangeオブジェクトです.シーケンス汎用アクションには、インデックス、長さ、組合せ(シーケンス加算)、繰返し(乗算)、スライス、メンバーのチェック、遍歴、最大値、最小値が含まれます.
リスト#リスト#
リストはpythonで最もよく使われるデータ型で、四角カッコで定義され、要素間はカンマで区切られています.
リストの一般的な方法
1.リストを定義
#        
list1 = []
print(list1,type(list1))
#        
list2 = ['hello']
print(list2,type(list2))
#        
list3 = [1,'hello',[2,'world']]
print(list3,type(list3))
    :
[] 
['hello'] 
[1, 'hello', [2, 'world']] 

2.リストの索引
list4 = [1,2,3,4,5,6]
print(list4[:])   #   0             
print(list4[:4])  #   0   4  
print(list4[2:])  #   0         
print(list4[1:6:2]) #   1   6  ,   2
print(list4[::-1])  #           
    :
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4]
[3, 4, 5, 6]
[2, 4, 6]
[6, 5, 4, 3, 2, 1]

3.リストの追加
1.  append()            
list4.append(7)
print(list4)
list4.append('abc')
print(list4)
    :
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 'abc']

3.2.extend()                 ;
list4.extend(list3)
print(list4)
    :
[1, 2, 3, 4, 5, 6, 7, 'abc', 1, 'hello', [2, 'world']]

3.  insert()             
list4.insert(2,'100')
print(list4)
    :
[1, 2, '100', 3, 4, 5, 6]

4.リストの削除
1.remove()             
list4.remove('100')
print(list4)
list4.remove(5)
print(list4)
    :
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 6]

2.pop()         
list4.pop()        #             
print(list4)
list4.pop(-1)     #          
print(list4)
list4.pop(1)      #        2   
print(list4)
    :
[1, 2, 3, 4]
[1, 2, 3]
[1, 3]

3.del()      ,                    
del(list4[0])
print(list4)
del(list4)  #       ,     
print(list4)
    :
[3]

4.clear()         ,       
list5 = [9,8,7,6,5]
list5.clear()
print(list5)
    :
[]

5.リストの変更
l1 = [0,1,2,3,4,5]
l1[3] = 'abc'
print(l1)
    :
[0, 1, 2, 'abc', 4, 5]

l1 = [0,1,2,3,4,5]
l1[:3]='abcdef'
print(l1)
    :
['a', 'b', 'c', 'd', 'e', 'f', 3, 4, 5]

6.リストのコピーはpythonにあり、コピーの問題に対して、深いコピーと浅いコピーの問題がある.両者の違いは、元のリストから新しいリストをコピーし、そのうちのいずれかを修正することが他のリストに影響を及ぼすかどうか、すなわち、この2つのリストがメモリに同じ領域に格納されているかどうかであり、これは深いコピーと浅いコピーを区別する重要な根拠である.レプリケーションの願いは、レプリケーションされたリスト間で相互に影響しないことです.
1.      ,        ;
l1 = [1,2,3,4,5]
l2 = l1                  # l1     l2
print(l1,id(l1))
print(l2,id(l2))
#  l1        l2
l1.append(6)
print(l1,id(l1))
print(l2,id(l2))
    :
[1, 2, 3, 4, 5] 7758408
[1, 2, 3, 4, 5] 7758408
[1, 2, 3, 4, 5, 6] 7758408
[1, 2, 3, 4, 5, 6] 7758408
  l1  l2     ;

2.      
l2 = [1,2,3,'abc','efg']
l3 = l2.copy()
print(l2,id(l2))
print(l3,id(l3))
l2.append('hij')
print(l2,id(l2))
print(l3,id(l3))
    :
[1, 2, 3, 'abc', 'efg'] 5136968
[1, 2, 3, 'abc', 'efg'] 5137032
[1, 2, 3, 'abc', 'efg', 'hij'] 5136968
[1, 2, 3, 'abc', 'efg'] 5137032

l2 = [1,2,3,'abc','efg']
l4 = l2[:]
print(l2,id(l2))
print(l4,id(l4))
    :
[1, 2, 3, 'abc', 'efg'] 34807752
[1, 2, 3, 'abc', 'efg'] 33972808

3.      
deepcopy()  ,     ,       ,           ;
          copy  ;
import copy
l2 = [1,2,3,'abc','efg']
l3 = copy.deepcopy(l2)
print(l2,id(l2))
print(l3,id(l3))
l3.append('hij')
print(l2,id(l2))
print(l3,id(l3))
    :
[1, 2, 3, 'abc', 'efg'] 31946504
[1, 2, 3, 'abc', 'efg'] 31945288
[1, 2, 3, 'abc', 'efg'] 31946504
[1, 2, 3, 'abc', 'efg', 'hij'] 31945288

7.リストの長さ、繰り返し、組合せ、メンバーの操作および遍歴
l1 = [0,1,2,3,4,5]
l2 = [1,2,3,'abc','efg']
print(len(l2))
print(l1+l2)
print(l1*3)
print(5 in l1)
for i in l1:
    print(i)
    :
5
[0, 1, 2, 3, 4, 5, 1, 2, 3, 'abc', 'efg']
[0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
True
0
1
2
3
4
5

8.リスト内の要素を反転
l1 = [0,1,2,3,4,5]
l1.reverse()
print(l1)
    :
[5, 4, 3, 2, 1, 0]

9.リストのソートリストのsort関数はASSICコードに従ってソートする
l2 = [1,7,3,9,8,5]
l2.sort()
print(l2)
l3 = ['a','f','r','d']
l3.sort()
print(l3)
l4 = [5,8,1,4,'c','f']  #   sort              ,       
l4.sort()
print(l4)
    :
[1, 3, 5, 7, 8, 9]
['a', 'd', 'f', 'r']
  :
TypeError: '

10.リストのzip()関数zip()は、複数のシーケンスの要素をペアリングし、新しいメタグループリストを生成する.zipは任意の数のシーケンスを受け入れることができ、最終的に得られるメタグループの数は最短のシーケンスによって決定される.
l1 = [1,2,3,4,5]
l2 = ['a','b','c','d','e']
l3 = [6,7,8,9,10]
l4 = zip(l1,l2,l3)
print(l4,type(l4))
for i in l4:
    print(i)
    :
 
(1, 'a', 6)
(2, 'b', 7)
(3, 'c', 8)
(4, 'd', 9)
(5, 'e', 10)

「圧縮済み」(zipped)シーケンスの場合、そのシーケンスを解凍します(unzipは*で表されます).ローのセットをカラムのセットに変換します.
l4 = [(1, 'a', 6),(2, 'b', 7),(3, 'c', 8),(4, 'd', 9),(5, 'e', 10)]
n1,n2,n3 = zip(*l4)
print(n1)
print(n2)
print(n3)
    :
(1, 2, 3, 4, 5)
('a', 'b', 'c', 'd', 'e')
(6, 7, 8, 9, 10)

スタックとして使用するリスト
リストをスタックとして使用し、最後に挿入し、最初に先に出て、(後で近くで先に出て)スタックの先端に追加するにはappend()関数を使用し、スタックの最初の要素を取り出してpop()関数を使用します.
l2 = ['abc',5,8,'efc']
l2.append(1000)
print(l2)
l2.pop()
print(l2)
    :
['abc', 5, 8, 'efc', 1000]
['abc', 5, 8, 'efc']

キューとして使用するリスト
リストはキューとして使用することもできます.ここで、先に追加した要素が最初に取り出されます(「先に出る」).しかし、リストはこの目的としてかなり効果的ではありません.リストの末尾に要素を追加したりポップアップしたりするのは速いが、リストの先頭に要素を挿入したりポップアップしたりするのは遅いからだ.キューを実装するにはcollections.dequeは両端から迅速に動作するように設計されている.