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


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

*

*



列(シーケンス)型と値


概要

[ edit ]

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

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

    文字列

    テキスト列型

    str型

    リスト型

    list型

    タプル型

    tuple型

    range型

    range型


列の演算

[ edit ]

内容更新可能(ミュータブル)と内容更新不可能(イミュータブル)の列に共通の演算

[edit]

  • *

    包含性

    包含判定

    x in s

    sxと等しい要素が含まれているか

    非包含判定

    x not in s

    sxと等しい要素が含まれていないか

    *

    算術演算

    結合

    s + t

    sと 列tの連結

    繰り返し

    s * n

    s自身をn回足し合わせたもの

    繰り返し

    n * s

    s自身をn回足し合わせたもの

    *

    アクセス

    添字アクセス

    s[i]

    si番目の要素 (左端の添え字をゼロとする)

    アクセス

    部分範囲スライス

    s[i:j]

    si番目からj-1番目までを抽出した部分列

    アクセス

    部分範囲スライス

    s[i:j:k]

    si番目からj-1番目まで,k毎に抽出した部分列

    *

    属性

    要素数

    len(s)

    sの長さ

    アクセス

    最小要素

    min(s)

    sの最小の要素

    アクセス

    最大要素

    max(s)

    sの最大の要素

    *

    検索

    検索

    s.index(x)

    s中で 要素xが最初に出現する添え字

    検索

    検索

    s.index(x, i)

    s中で 要素xが最初に出現する添え字 (i以降)

    検索

    検索

    s.index(x, i, j)

    s中で 要素xが最初に出現する添え字 (i以降からjまでの範囲)

    検索

    出現回数

    s.count(x)

    s中に 要素xが出現する回数


使用例

  • 包含性判定 [edit]

>>> 3 in [1,2,3,4,5]
True

>>> 8 in [1,2,3,4,5]
False

>>> 3 not in [1,2,3,4,5]
False

>>> 8 not in [1,2,3,4,5]
True

>>> [1,2,3]+[4,5]
[1, 2, 3, 4, 5]

>>> [1,2,3]*2
[1, 2, 3, 1, 2, 3]

>>> 2*[1,2,3]
[1, 2, 3, 1, 2, 3]
  • アクセス [edit]

>>> [1,2,3,4,5,6,7,8,9][4]
5

>>> [1,2,3,4,5,6,7,8,9][2:6]
[3, 4, 5, 6]

>>> [1,2,3,4,5,6,7,8,9][2:6:2]
[3, 5]
  • 長さ,最大値,最小値 [edit]

>>> len([1,2,3,4,5,6,7,8,9])
9

>>> min([4,3,7,6,2,8,1,5])
1

>>> max([4,3,7,6,2,8,1,5])
8

>>> [1,2,3,1,2,3,1,2,3].count(2)
3

>>> [1,2,3,1,2,3,1,2,3].index(2)
1

>>> [1,2,3,1,2,3,1,2,3].index(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 8 is not in list

>>> [1,2,3,1,2,3,1,2,3].index(2,3)
4

>>> [1,2,3,1,2,3,1,2,3].index(1,3,8)
3


内容更新可能(ミュータブル)な列に固有の演算

edit

  • 要素の上書き

    s[i] = x

    s の i番目の要素を x で上書きする

    部分範囲の上書き

    s[i:j] = t

    s の i から j-1 番目までの部分列をtで上書きする

    部分範囲の上書き

    s[i:j:k] = t

    s[i:j:k] の要素を t の要素で上書きする

    追加

    s.append(x)

    x を列の最後に追加する

    s[len(s):len(s)] = [x]

    拡張

    s.extend(t)

    s を t の内容で拡張する

    s[len(s):len(s)] = t  

    拡張

    s += t

    s を t の内容で拡張する

    s[len(s):len(s)] = t  

    反復

    s *= n

    s を,その内容を n 回繰り返したものに更新する

    部分範囲の削除

    del s[i:j]

    s[i:j] = [] と同じ

    部分範囲の削除

    del s[i:j:k]

    リストから s[i:j:k] の要素を削除する

    クリア

    s.clear()

    s から全ての要素を取り除く

    del s[:]

    浅いコピー

    s.copy()

    s の浅いコピーを作成する

    s[:]

    挿入

    s.insert(i, x)

    s の 添え字iの位置 に x を挿入する

    s[i:i] = [x]

    要素の除去

    s.pop()

    s から最後の要素を取り除き,それを返す

    要素の除去

    s.pop(i)

    s から i 番目の要素を取り除き,それを返す

    要素の除去

    s.remove(x)

    s から s[i] == x となる最初の要素を取り除く

    反転

    s.reverse()

    s をインプレースで(書き換えて)逆転させる


使用例

  • 要素/部分範囲の上書き

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

>>> x[3] = "x"

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

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

>>> x[2:4] = ["x","y"]

>>> x
['a', 'b', 'x', 'y', 'e']

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

>>> x[1:5:2] = ["x","y"]

>>> x
['a', 'x', 'c', 'y', 'e']
  • 追加/拡張

>>> x  = ["a","b","c","d","e"]
>>> x.append( "f" )
>>> x
['a', 'b', 'c', 'd', 'e', 'f']

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

>>> x.extend( ["f","g","h"] )

>>> x
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

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

>>> x += [1,2,3]

>>> x
['a', 'b', 'c', 'd', 'e', 1, 2, 3]

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

>>> x  *= 3

>>> x
['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
  • 部分範囲の削除

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

>>> del x[2:4]

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

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

>>> del x[1:4:2]

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

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

>>> x.clear()

>>> x
[]
  • 浅いコピー

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

>>> y = x.copy()

>>> id( x )
2003548691976
>>> id( y )
2003548691016

>>> x
['a', 'b', 'c', 'd', 'e']
>>> y
['a', 'b', 'c', 'd', 'e']
  • 挿入

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

>>> x.insert( 3, "x" )

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

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

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

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

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

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

>>> x.pop(1)
'b'
>>> x
['a', 'c', 'e']
  • 削除

>>> x  = ["a","b","c","a","b"]

>>> x.remove("b")

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

>>> x.remove("b")

>>> x
['a', 'c', 'a']
  • 反転

>>> x  = ["a","b","c","d","e"]
>>> x.reverse()
>>> x
['e', 'd', 'c', 'b', 'a']

内容更新不可能(イミュータブル)な列に固有の演算

edit

  • ハッシュ

    hash()

*

リファレンス

*



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



*

SoftEng: Python/Lang/DataType/Sequence (last edited 2018-09-28 12:51:13 by TadashiIijima)