Pythonデータ型とその使い方


ここでは、Pythonで使用されるさまざまなデータ型と、私たちのコードを簡潔にする方法についてまとめます.
きほんこうぞう
まず、文字列、整数、浮動小数点、ブールなど、ほとんどの言語が持つデータ型を見てみましょう.これらの基本データ型は基本制御ブロックを構成し、Pythonアプリケーションを作成します.
文字列
String(String)は、通常、ユーザーに何らかの形で出力されるテキスト文字です.Pythonの解釈器を開くと、最も一般的な出力「Hello World!」を試してみました.適用:
>>> print ("Hello, world!")
Hello, world!

Pythonのデータ型はJavaやC言語のように表示される定義は必要ありません.これはPythonで文字列が簡単に引用符で囲まれて識別され、上の「Hello,world!」そうですか.二重引用符ではなく単一引用符を使用することもできます.文字列に二重引用符がある場合は、単一引用符を使用して文字列全体を表すと便利です.たとえば、次のようにします.
>>> print ("This is David's program")
This is David's program

>>> print ('"Hello", said David')
"Hello", said David

上記から、異なる条件で異なる引用符を交差させる方法がわかります.
文字列には、多くのPythonプログラムで役立つ多くの内蔵関数があります.
  • endswith()-文字列が所定の文字列で終わるかどうかを確認します
  • startswith()-文字列が所定の文字列で始まるかどうかを確認します
  • upper()-文字列のすべての文字を大文字にします
  • lower()-文字列のすべての文字を小文字にします
  • isupper()/islower()-文字列がすべて大文字/小文字であるかどうかを検出
  • 文字列をパラメータとして関数len()に入力して、len(「david」)
  • のような文字列の長さを返すこともできます.
    Pythonでは文字列も反復可能であり,反復の概念はリストや辞書データ型でより深く理解できる.これは、文字列内の各文字を順番にループできることを意味します.これは他の言語では一般的にはできません.
    もう一つの文字列に関するテクニックは、文字列をフォーマットすることです.最良の方法はformat文で完成し、この関数はあなたが入力したオブジェクトのタイプを処理するために文字列形式で表示されるので、任意のタイプのオブジェクトをformatメソッドに入力して出力することができます.次のようになります.
    >>> string_1 = "Hello, {}, here is your string".format("David")
    'Hello, David, here is your string'
    >>>
    >>> string_2 = "Hello, {}, your are {} years old".format("David", 23)
    'Hello, David, you are 23 years old'
    >>>
    >>> string_3 = "Hello, {}, your are {} years old".format("David", 23.5)
    'Hello, David, you are 23.5 years old'
    

    上記のコードから明らかなように、formatメソッドは、任意のPythonデータ型を文字列に置き換えるために使用することができる.
    ブールタイプおよびif文
    ブール値(True or False)はどの言語でも重要であり、変数の真偽値に基づいて判断することができ、コードを通じてプログラムのパスを制御することができます.Pythonでは、ブール値の頭文字は大文字:TrueFalseです.たとえば、上記の文字列のいくつかの方法を使用して、文字列が大文字であるかどうかをテストし、正しい結果を出力できます.
    >>> if "david".isupper():
    	print ('"david" is uppercase')
    else:
    	print ('"david" is lowercase')
    
    	
    "david" is lowercase
    

    Pythonのif文は、最初の条件が本物かどうかを確認するために使用され、Trueの場合は「david」is uppercaseが印刷されます.しかし、この例ではFalseが返されるので、elseブロックが実行され、「david」is lowercaseが印刷される.
    Pythonでは、データには暗黙的な真偽値があり、コードを短く、正確にするのに非常に役立ち、どこも判断する必要はありません.次に、Pythonで暗黙的なブール値を使用する例を示します.
    >>> bool('')
    False
    >>> bool('hello')
    True
    >>> a = None
    >>> b = 1
    >>> bool(a)
    False
    >>> bool(b)
    True
    >>> if a:
         	print ("Yes")
    
    >>> if b:
           	print ("Yes")
    Yes
    

    この例では、変数の真偽値をチェックできることがわかります.boolメソッドを呼び出すことで、私たちの変数をパラメータとして入力し、TrueまたはFalseを返します.空の値またはNone(Pythonの他の言語NullまたはNilのような値)はFalseとみなされ、他の場合はTrueとみなされます.
    整数、浮動小数点、複数
    数値(Numbers)はPythonで通常のフォーマットで表されるように、1,10,561045100433などの整数型である.
    浮動小数点型は、通常、1.23、0.34532、23.4667などの小数点以下で使用する必要があります.
    Pythonは簡単で高度な数学計算をサポートし、広範な用途を持っており、最もよく使われているのは基本的な算術演算です.
    >>> 1 + 1
    2
    >>> 1 - 1
    0
    >>> 2 * 2
    4
    >>> 2 / 2
    1
    

    Python Docsを見ると、複数のタイプが次のように解釈されます.
    Complex numbers are also supported; imaginary numbers are written with a suffix of j or J. Complex numbers with a nonzero real component are written as (real+imagj), or can be created with the complex(real, imag) function.
    >>> 1j * 1J
    (-1+0j)
    >>> 1j * complex(0,1)
    (-1+0j)
    >>> 3+1j*3
    (3+3j)
    >>> (3+1j)*3
    (9+3j)
    >>> (1+2j)/(1+1j)
    (1.5+0.5j)
    

    Complex numbers are always represented as two floating point numbers, the real and imaginary part. To extract these parts from a complex number z, use z.real and z.imag.
    >>> a=1.5+0.5j
    >>> a.real
    1.5
    >>> a.imag
    0.5
    

    より高度な構造
    リストおよびforループ
    リスト(list)はPythonや他の言語で最もよく使われるデータ構造の一つです.Pythonは中括弧()を使用してリストを解析し、任意の順序でデータを格納することで、処理を容易にします.たとえば、1つのオブジェクトからデータを抽出する必要がある場合は、後で使用するためにリストにデータを保存できます.
    >>> my_list = []
    >>> for object in objects:
    		my_list.append(object.name)
    >>> print (my_list)
    ['name_1', 'name_2', 'name_3']
    

    上記の例はよくありませんが、オブジェクトからデータを抽出し、リストに入れると表示されます.同様に、2つのリストがある場合は、extendメソッドを使用して、それらを1つにまとめることができます.
    >>> list_1 = [1,2,3]
    >>> list_2 = [4,5,6]
    >>> print (list_1.append(list_2))
    [1,2,3,[4,5,6]]
    >>> print (list_1.extend(list_2))
    [1,2,3,4,5,6]
    

    これはこの2つの重要な方法の違いをはっきりと見ることができる.
    私たちの最初の例では、forループを使用して私たちのデータからリストを構成し、より簡潔な解決方法はリスト拡張を使用することができ、これはプロセス全体を1行に圧縮することができます.これはPythonが提供する効率的な解決方法です.
    >>> my_list = [object.name for object in objects]
    >>> print my_list
    ['name_1', 'name_2', 'name_3']
    

    これが第1のメソッドにどのようにマッピングされるかを見てみましょう.リストでは、objectsを巡り、objectsから各要素を取り出す変数名としてobjectを使用し、最後にobjectのnameを取り出して私たちのリストを構成します.
    リストオブジェクトを構築するためにカッコを使用するほか、リスト構築関数list()を使用してリストを作成することもできます.以下のようにします.
    >>> list('a')
    ['a']
    >>> values = (1,2,3,4) # tuple object see below
    >>> list(values)
    [1,2,3,4]
    

    辞書
    もう一つ一般的に使われているPythonデータ構造は辞書です(Dictionaries).辞書は大量のデータを格納し、迅速な処理方法を提供するために使用されます.一般的な辞書アプリケーションの例は通信録システムです.辞書のようなデータ構造では、対応する「value」を照会するために唯一の「key」が必要です.通信録では、その唯一の「key」は電話番号であってもよいので、辞書構造はこのようになります.の:
    >>> phonebook = {
          '012345678': 'A Person',
                     '987654321': 'A.N Other'}
    

    ここに辞書があります.電話番号は「key」、対応する人名は「value」です.この構造を使用して、次のようにクエリーできます.
    >>> phonebook['012345678']
    'A Person'
    

    Pythonの辞書は、iteritems、iterkeys、およびitervaluesという各数を反復する標準的な方法を提供しています.これらの関数は、keysとvalues、keysのみ、valuesのみを反復することをそれぞれ可能にします.次に例を示します.
    すべてのアイテムを反復:
    >>> for key, value in phonebook.iteritems():
            print (key, value)
    987654321 A.N Other
    012345678 A Person
    

    すべてのkeysのみを反復:
    >>> for key in phonebook.iterkeys():
            print (key)
    987654321
    012345678
    

    すべてのvaluesのみを反復します.
    >>> for value in phonebook.itervalues():
            print (value)
    A.N Other
    A Person
    

    リストと同様に、辞書を作成する方法も1つ以上あります.これまでは、辞書を1つずつ列挙して括弧で囲む方法しか使用していませんでした.しかし、次のように辞書構造関数を使用して作成することもできます.キーワードパラメータを入力して、辞書のキー値ペアを作成する必要があります.
    >>> dict(a=1, b=2, c=3)
    {
          'a': 1, 'c': 3, 'b': 2}
    

    SetsとFrozensets
    リストと同様に、集合(Sets)とFrozensetsのデータ構造もあります.集合はリストのようにデータを格納することができますが、異なるのは集合に重複要素があることは許されません.データごとにコピーが1部しかないことを確保したい場合、これは素晴らしいです.Frozensetsはほとんど普通の集合と同じですが、可変のタイプ(immutable)です.これは、作成されると、これ以上変更できないことを意味します.
    同様に、コレクションを作成する方法には、列挙方法があります(同じ要素が自動的に削除されることに注意してください):
    	
    >>> a = {
          1,2,3,3}
    set([1, 2, 3])
    

    コンストラクション関数も使用できます.
    >>> set([1,2,3,3])
    set([1, 2, 3])
    

    Pythonは強力な集合操作方法を提供し、数学の集合の並列、交差、差分などの操作を完成することができます.以下のようにします.
    >>> a = {
          1,2,3}
    >>> b = {
          3,4,5}
    >>> a.union(b)
    set([1, 2, 3, 4, 5])
    >>> 
    >>> a.difference(b)
    set([1, 2])
    >>> 
    >>> a.intersection(b)
    set([3])
    

    メタグループ
    最後に紹介したPythonデータ型はタプルです.タプルはリストと似ていて、格納されたデータをカンマ(,)で区切っていますが、リストとは異なりタプルは可変型です(immutable)は、リストを挿入したり変更したりすることができますが、メタグループはできません.したがって、メタグループはデータが固定されていて変更する必要がない場合に適しています.メモリの観点から、メタグループを使用するメリットは、Pythonがメタグループにどれだけのメモリを割り当てる必要があるかを明確に知ることです(同様にFrozensetsにもこのメリットがあります).
    Pythonは、列挙法と構造法を提供してメタグループを作成します.
    >>> my_tuple = (1,2,3,4)
    (1,2,3,4)
    >>> 
    >>> a = tuple([1,2,3,4])
    >>> type(a)
    <class 'tuple'>
    

    メタグループについてここでいくつかの特殊な状況について説明する必要があります.空のカッコを使用するか、パラメータを渡さないコンストラクション関数を使用して空のメタグループを作成できますが、要素が1つしかないメタグループを作成するには追加のカンマが必要です.一見間違っているように見えますが、これが正しい構文です.これは、このカンマがなければ、Pythonはカッコを無視し、中の値しか見えないからです.次の例では、この点を説明します.
    >>> empty_tup = ()
    >>> type(empty_tup)
    <class 'tuple'>
    >>> 
    >>> empty_tuple = tuple()
    <class 'tuple'>
    >>>
    >>> single_tup = (1)
    >>> type(single_tup)
    <class 'int'>
    >>>
    >>> single_tup = (1,)
    >>> type(single_tup)
    <class 'tuple'>
    

    小さなカンマがこんなに大きく作用しているのが見えます!
    まとめ
    本文は主にPythonの中で私たちが使っているいくつかのデータ構造の違いを総括し、いくつかの面白い高級な使い方も羅列した.       
    参考資料:http://tech.pro/tutorial/1151/python-data-types-and-their-usage主にこの文章から訳すhttp://docs.python.org/3.3/Python公式ドキュメント、最も権威のある最も全面的なPython学習資料