Python Listのappendとextend


最近、Scrapyのソースコードを読んでいると、listメソッドappendとextendの使用について見ました.初めて見ると,まだ少しぼんやりしている.では、資料をよく探して分析してみましょう.
stackoverflowの回答は次のとおりです.
append:末尾にオブジェクトを追加(Appends object at end)
 
  
C:\Users\sniper.geek>python2
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> x =[1,2,3]
>>> x.append([4,5])
>>> print x
[1, 2, 3, [4, 5]]
>>>

appendに対して、1つの要素だけ追加してもいいですか?試してみる:
 
  
C:\Users\sniper.geek>python2
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=[1,2,3]
>>> x.append(5)
>>> print x
[1, 2, 3, 5]
>>>

では、メタグループを追加できますか?続行:
 
  
C:\Users\sniper.geek>python2
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=[1,2,3]
>>> x.append(5)
>>> print x
[1, 2, 3, 5]
>>> x.append((6,7,8))
>>> print x
[1, 2, 3, 5, (6, 7, 8)]
>>>

以上よりappendはlistを1つ追加したり,メタグループを1つ追加したり,個別の要素を追加したりすることができる.
extend:反復器から要素を追加することでシーケンスを拡張する(extends list by appending elements from the iterable)
 
  
C:\Users\sniper.geek>python2
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=[1,2,3]
>>> x.extend([4,5])
>>> print x
[1, 2, 3, 4, 5]
>>>

では、extendのパラメータはlistまたはメタグループでよいのでしょうか.試してみる:
 
  
C:\Users\sniper.geek>python2
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=[1,2,3]
>>> x.extend([4,5,6])
>>> print x
[1, 2, 3, 4, 5, 6]
>>> x.extend((8,9,10))
>>> print x
[1, 2, 3, 4, 5, 6, 8, 9, 10]
>>>

以上より,extendのパラメータは単一要素に加えてlistまたはメタグループであってもよいことが分かった.
まとめ:
  • appendとextendはいずれも1つのパラメータ
  • しか受信できない.
  • appendのパラメータタイプは任意で、上述の単一要素のようにlist乃至メタグループは
  • である.
  • extendのパラメータは、単一の要素であってもよいし、反復器の属性を持つlist、メタグループ
  • を含んでもよい.
  • appendはオブジェクトを1つの全体としてlistの後ろに追加し、extendはlistまたはメタグループの要素をリストに1つずつ追加し、すなわちappendがlistまたはメタグループを追加すると、最後の要素自体がlistまたはメタグループであり、extendがlistまたはメタグループを拡張するとlistの要素が1つずつ追加され、最後に得られたのは長くなったリストです.