Python > 言語 > データ型 > 列型 > タプル型


Python - 言語 - データ型 - 列型 - タプル型

*

*



タプル型と値

edit

  • 変更不能
    イミュータブル
    (immutable)

    変更可能
    ミュータブル
    (mutable)

    文字列

    テキスト列型

    str型

    リスト型

    list型

    タプル型

    tuple型

    range型

    range型

タプル(tuple)型のデータ

タプルの生成

edit

  • (..., ..., ...) で要素を並べたもの
    • リストと異なり,要素を変更できない(イミュータブル)

>>> 1,2
(1, 2)
  • 要素がひとつだけの時は、最後にカンマ(,)を記述する必要がある
    • 実は,タプルを形成しているのは丸括弧ではなく,カンマの方
  • 空のタプルは,()でよい

>>> 1,2
(1, 2)

>>> (1)
1

>>> (1,)
(1,)

>>> ()
()
  • リテラルの型を確認する

>>> type( (1,2) )
<class 'tuple'>

>>> type( (1) )
<class 'int'>

>>> type( (1,) )
<class 'tuple'>

>>> type( () )
<class 'tuple'>
  • 複数の値を返す関数の返戻値は,タプルへの代入で受けることができる

>>> (x,y)= divmod( 99, 5 )

>>> x
19

>>> y
4

タプルの生成

  • 生成子(コンストラクタ)
    • tuple()もしくはtuple(iterable)で生成できる.
  • 空のタプルの生成

>>> tuple()
()
  • 反復子(イテレータブル)を引数にとるコンストラクタ

>>> x = tuple( range( 2,8,2 ) )

>>> x
(2, 4, 6)

>>> type( x )
<class 'tuple'>

タプルは要素を変更できない(イミュータブル)

  • リスト要素は変更可能

>>> data_list  = ["a","b","c","d","e"]
>>> data_list[3]
'd'
>>> data_list[3] = "x"
>>> data_list
['a', 'b', 'c', 'x', 'e']
  • タプル要素は変更できない

>>> data_tuple  = ("a","b","c","d","e")
>>> data_tuple[3]
'd'
>>> data_tuple[3] = "x"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> data_tuple
('a', 'b', 'c', 'd', 'e')


タプル(tuple)の操作

リストとの相互変換

edit

  • タプルからリストに変換する

    list()

    リストからタプルに変換する

    tuple()

  • タプルからリストに変換する

>>> x = list( ("a","b","c","d","e") )

>>> x
['a', 'b', 'c', 'd', 'e']

>>> type( x )
<class 'list'>
  • タプルからリストに変換する
    • 入れ子になっていても,再帰的に変換せず,いちばん外側のみ変換する

>>> x = list( ("a","b",("c","d"),"e") )

>>> x
['a', 'b', ('c', 'd'), 'e']

>>> type( x )
<class 'list'>
  • リストからタプルに変換する

>>> x = tuple( ["a","b","c","d","e"] )

>>> type( x )
<class 'tuple'>
  • リストからタプルに変換する
    • 入れ子になっていても,再帰的に変換せず,いちばん外側のみ変換する

>>> x = tuple( ["a",["b","c"],"d","e"] )

>>> x
('a', ['b', 'c'], 'd', 'e')

>>> type( x )
<class 'tuple'>
*

リファレンス

*



Software Engineering(IIJIMA, Tadashi -- Keio Univ.)



*