Pythonシーケンスのリスト独自の基本操作


リストは最も一般的なPythonデータ型で、カッコ内のカンマ区切り値として表示されます.リストがメタグループと異なる(別のページでメタグループを単独で紹介する)と文字列の最大の違いは、リストが可変であり、要素が修正可能であることである.リストの例:a=['a',1,['b']],b=[[[[','b'],'c'],1,''abc]
リスト固有の基本操作は、要素の割り当て、要素の削除、スライスの割り当てです.(備考:この操作は既存のリストの内容を直接変更したものです)
1.エレメントに値を割り当て、リスト内のエレメントの値を直接変更します.
>>> x=[1,2,'a']
>>> x[0]=['a']   #        
>>> x
[['a'], 2, 'a']
>>> x[-1]='b'    #         
>>> x
[['a'], 2, 'b']
>>> x[10]='d'    #           
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list assignment index out of range

2.要素を削除し、del文で実現
>>> x          #  x     3 ,    3
[['a'], 2, 'b']
>>> len(x)    
3
>>> del  x[1]  #    x      
>>> x
[['a'], 'b']
>>> len(x)     #        ,        
2
>>> del x[10]  #          
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list assignment index out of range>>> 
>>>x=['a', 2, 'a', 4, 'a', 8, 'a', 7, 'a', 6, 'a', 5]
>>> del x[1:8:2]   #               (    ),          
>>> x
['a', 'a', 'a', 'a', 'a', 6, 'a', 5]

3.分片賦値、分片賦値という機能は比較的に強く、増加、削除、変更のすべての機能を実現することができる.
スライス割り当ては、複数の要素に一度に割り当てることができます.
>>> x=[1,2,3,4]
>>> x[2:]=[5,6]
>>> x
[1, 2, 5, 6]

スライス付与値は、既存のスライスを不等長のスライスで置き換えることができ、右側の長さが左より大きい場合、余分な要素は新しい値を挿入する方法をとる.右の長さが左の長さより小さい場合、元のリストの後ろの要素は削除されます.両辺の長さが等しい場合は、その場で置換します.
>>> x=[1,2,3,4]
>>> y=[5,6,7,8]
>>> x[2:]=y[1:]   #  2   ,  3   ,     1         x   
>>> x
[1, 2, 6, 7, 8]
>>> z=['a','b','c']
>>> x[0:1]=z      #  1   ,  3   ,   2            x[0]   
>>> x
['a', 'b', 'c', 2, 6, 7, 8]
>>> x[-4:]=z      #  4   ,  3   ,   x[-2]       
>>> x 
['a', 'b', 'c', 'a', 'b', 'c']
>>> x[1:]=z[0:1]  #  5   ,  1   ,   x[1]       
>>> x
['a', 'a']
>>> x=[1,2,3,4]
>>> x[1:3]=[5,6]  #        ,          
>>> x
[1, 5, 6, 4]

上記の方法で延長を続けると、リストの任意の位置に任意の要素を挿入することができ、左の要素の数を0にするだけでよい.
>>> x=[1,2,3,4]
>>> x[1:1]=[5,5,5]    #           3   
>>> x
[1, 5, 5, 5, 2, 3, 4]
>>> x[-2:0]=[6,6,6]   #             3   
>>> x
[1, 5, 5, 5, 2, 6, 6, 6, 3, 4]

上記の方法で延長を続けると、リスト内の任意の場所の要素を削除できます.
>>> x=[1,2,2,3,4,5,6,7,8,9]
>>> x[1:2]=[]       #       
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[1:5]=[]       #          
>>> x
[1, 6, 7, 8, 9]
>>> x[1:5:2]=[]     #      1 ,           ,    
Traceback (most recent call last):
  File "", line 1, in 
ValueError: attempt to assign sequence of size 0 to extended slice of size 2
 
リストをステップ長が1でない操作
>>> x=[1,2,3,4]*3
>>> x
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> x[::2]='a'*(len(x)/2)       #   x           'a'
>>> x
['a', 2, 'a', 4, 'a', 2, 'a', 4, 'a', 2, 'a', 4]
>>> x[-1:-8:-2]=[5,6,7,8]          #                  4         5,6,7,8  (      )
>>> x
['a', 2, 'a', 4, 'a', 8, 'a', 7, 'a', 6, 'a', 5]