スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
.-- -- スポンサー広告 comment(-) trackback(-)

Pythonメモ書き:タプルの基本的な操作

タプルは丸カッコの中に各要素を並べ、要素同士の間にはカンマ(,)を書きます。

では、恒例のインタラクティブシェルで練習。

>>>('python', 'c') + ('perl', 'ruby')    #連結
('python', 'c', 'perl', 'ruby')
>>>
>>>('python', 'c') * 4           #繰返し
('python', 'c', 'python', 'c', 'python', 'c', 'python', 'c')
>>>
>>>T1 = ('python', 'c')
>>>T2 = ('perl', 'ruby')
>>>T1 + T2                 #連結
('python', 'c', 'perl', 'ruby')
>>>T1 * 4                 #繰返し
('python', 'c', 'python', 'c', 'python', 'c', 'python', 'c')
>>>
>>>T3 = T1 + T2
('python', 'c', 'perl', 'ruby')
>>>T3[0]             #インデクシング
'python'
>>>T3[1:3]            #スライシング
('c', 'perl')        
>>>T3[0], T3[1:3]
('python', ('c', 'perl'))    #タプルのネストが変える


タプルは不変性なので、

もし、タプルをソートする必要ができた場合は、リストに変換してsortメソッドを使います。

>>>T3 = ('python', 'c', 'perl', 'ruby')
>>>tmp = list(T3)        #タプルの要素でリストを作成
>>>tmp
['python', 'c', 'perl', 'ruby']
>>>tmp.sort()          #リストをソート
>>>tmp
[ 'c','perl','python','ruby']
>>>T = tuple(tmp)        #リストの要素でタプルを作成
>>>T
( 'c','perl','python','ruby')


また、タプルの変更をする際、リスト内包表記も出来るのだとか。

>>>t = (1, 2, 3, 4, 5)
>>>l = [x * 10 for x in t]
>>>l
[10, 20, 30, 40, 50]


また、タプルは不変性オブジェクトなのですが、タプルの要素が自動的に不変性になるのではない!!

ということを頭にいれておきましょう!

つまり、リストがタプルの要素になっても、リストは本来通り可変性オブジェクトということです。

>>>t1 = (1, [2, 3], 4)
>>>t1[1] = 'python'     #タプルの上書きはできない
Traceback (most recent call last):
  File "", line 1, in
TypeError: 'tuple' object does not support item assigment
>>>
>>>t1[1][0] = 'python'   #可変性オブジェクトは要素でも上書き可能
>>>t1
(1, ['python', 3], 4)


っていう感じですかねぇ

スポンサーサイト
.31 2010 Python:タプル comment0 trackback0

Pythonメモ書き:タプル

タプルは、リストやディクショナリと同様に、

「コレクション型」

と呼ばれるオブジェクトの一種。

では、タプルの特徴をみてみます。

•オブジェクト(型は問わない)を一定の順序で並べたもの

•オフセットによって要素にアクセスする
→インデクシングやスライシングといった操作に対応可。

•不変性シーケンス

•長さは固定
→タプルは上書きが出来ないので、サイズの拡張、縮小ができない。
 サイズを変更したい場合は、新たなタプルを作成しないとならない。

•複数種の構成要素の混在は可能

•ネストにも対応可

•オブジェクトリファレンスの配列


では、ここでタプルの存在について考えてみます。

pythonでは複数のオブジェクトを一つの集合体にしたものにリストとディクショナリがあります。

ディクショナリはキーと値で一つの要素とされるので、キーで値を抽出出来ます。

リストとタプルは、構成要素が順番に並んでいるので自動的に(0から)番号がふられていくので
その番号で各要素を抽出出来ます。

では、リストとタプルをどう使い分けるのか??

そこは、やっぱりリストとタプルの違いに着目するしかないような。。。

リストは可変性オブジェクト

タプルは不変性オブジェクト

タプルは不変性を持っているので、整合性の面では有利になり、

タプルの内容が意図しないタイミングで勝手に変更されてしまう危険がナイ!!ということ。


まぁ、あと色々あるみたいなのですが、

まだまだヒヨッコの私には、これくらいの使い分けで十分な気がします。

あとの思考はおいおいということで。。。
.31 2010 Python:タプル comment0 trackback0
 HOME 

プロフィール

emi

Author:emi
日々、コンピューターとにらめっこしていた2010。
公の仕事に就くことを目指して教科書とにらめっこ2011,spring。
はたして2012は・・・

最新トラックバック

検索フォーム

ブロとも申請フォーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。