乾物!Python常用データ型の基本操作(長文シリーズ第1編)


Pythonの基础シリーズは基础の内容を大体4~5つのプレートに分けて、すべての文章は重讲して一方で、知识は难しくなくて、主に小さい例の形式で解読して、もしあなたはすでにPythonに入って、あなたに少し温习することを望みます;Pythonに入門したいなら、この敷居を越えてほしいです.
Pythonのオリジナルデータ型は主にNumber、String、Byte、Boolean、None、List、Tuple、Set、Dictの9種類があり、この文章は主に文字列、リスト、元祖、集合、辞書の5種類を話して、残りの4種類は自分で理解することができます.
文字列
文字列を初期化し、後で文字列でいくつかの操作を容易にします.
In [5]: s1 = 'naitangmao'
In [6]: s1

Out[6]: 'naitangmao'

文字列のインデックスは、インデックスの下付き文字が0から始まることに注意してください.
In [9]: s1[2]
Out[9]: 'i'

文字列のスライスは、先頭インデックスの位置をコロンで区切って[start:end]構造であり、end対応要素が含まれていないことに注意してください.コロンの左側はインデックスを書き込まずに最初から始まり、同じ理屈で右側はインデックスを書き込まずに文字列の末尾に切り取られます.
In [8]: s1[:3]# 0  ,0,1,2    
Out[8]: 'nai'

また、反転文字列は、スライスと負のインデックスを組み合わせて実現することもできます.
In [35]: s1[::-1]
Out[35]: 'oamgnatian'

加算を使用して文字列をマージします.
In [49]: print('ab'+'%'+'cd')
ab%cd

検索、findメソッドを使用して要素をクエリーすると、文字列に最初に表示された下付き文字が返され、見つからない場合は-1が返されます.
In [11]: s1.find('a')
Out[11]: 1

置換、replaceは、「tang」をスペースに置換するなど、文字列内の要素の置換を実現します.
In [13]: s1.replace('tang',' ')
Out[13]: 'nai mao'

スペースを削除し、stripメソッドを使用して文字列の先頭と末尾のスペースを削除し、削除する内容の指定もサポートします.
In [23]: s2 = '   aaabbbccc   '
In [24]: s2
Out[24]: '   aaabbbccc   '

In [25]: s2.strip()
Out[25]: 'aaabbbccc'

In [26]: s2 = s2.strip()
In [27]: s2.strip('a')#           
Out[27]: 'bbbccc'

切断、splitメソッドは要素に基づいて文字列を切断し、リストに格納することができます.パラメータを入力しないと、元の文字列がリストに直接格納されます.
In [30]: s1 = 'naitangmao'
In [31]: s1.split('t')
Out[31]: ['nai', 'angmao']

In [32]: s1.split()
Out[32]: ['naitangmao']

エレメントが文字列に存在するかどうかを判断します.
In [37]: 'nai' in s1
Out[37]: True

区切り、joinメソッドを使用して、1つの文字列を区切り文字として、別の文字列を区切ります.
In [38]: s1.join('!!!')
Out[38]: '!naitangmao!naitangmao!'

%文字列への入力パラメータ、%s入力文字列、%d入力整数、%f入力浮動小数点数を使用して、小数点以下の桁数を制御できます.
In [40]: print('naitangmao %s!' % '  ')
naitangmao   !
In [41]: print('naitangmao %d '% 66)
naitangmao 66
In [44]: print('naitangmao %.2f'% 3.1415)
naitangmao 3.14

formatを使用して文字列にパラメータを入力することもでき、パラメータタイプを気にする必要はありません.
In [46]: '{0}ai{1}ang{2}ao'.format('n','66','3.14')
Out[46]: 'nai66ang3.14ao'

文字列を逆スラッシュで変換します.
In [47]: print('\t')

In [48]: print('\\t')
\t

リスト#リスト#
同じようにリストを初期化し、リストの一連の操作を容易にします.
In [52]: list1
Out[52]: [1, 3, 5, 7, 9, 11]

まず同じリストのインデックスであり、リストも負のインデックスをサポートします.
In [53]: list1[2]
Out[53]: 5

In [55]: list1[-2]#   
Out[55]: 9

間隔のあるスライスをさらに広げると、文字列も同様に適用され、endの後に二重引用符を付けてスライスの間隔を書き込むのがスライスの最も完全な構造です.
In [58]: list1[0:6:2]
Out[58]: [1, 5, 9]

indexメソッドを使用すると、リスト内の要素の位置インデックスを取得できます.見つからない場合はエラーが表示されます.
In [60]: list1.index(3)
Out[60]: 1

joinメソッドを使用して、リスト内の各要素を文字列に結合します.
In [121]: list1 = ['a','b','c']
In [122]: ''.join(list1)
Out[122]: 'abc'

countメソッドは、要素がリストに表示される回数を統計します.
In [63]: list1.count(5)
Out[63]: 1

Enumerateは、リストのインデックスと対応する要素を直接取得できます.
In [133]: index_ = []
In [134]: value_ = []
In [135]: for i,v in enumerate(list1):
     ...:     index_.append(i)
     ...:     value_.append(v)
     
In [136]: index_
Out[136]: [0, 1, 2, 3, 4]
In [137]: value_
Out[137]: [3, 1, 4, 2, 5]

zipメソッドを使用して2つのリストをマージします.
In [139]: list3 = list(zip(index_,value_))
In [140]: list3
Out[140]: [(0, 3), (1, 1), (2, 4), (3, 2), (4, 5)]]

リストを拡大するには、次の4つの方法があります.
  • 1、append:リストの末尾
  • に要素を追加する
  • 2、insert:指定位置
  • に要素を挿入する.
  • 3、extend:1つのリストのすべての要素を別のリストに追加する
  • 4、+:2つのリストを1つの新しいリストにマージ
  • In [68]: list1.append(12)
    In [69]: list1
    [1, 3, 5, 7, 9, 11, 12]
    
    In [78]: list1.insert(0,0)
    In [79]: list1
    Out[79]: [0, 1, 3, 5, 7, 9, 11, 12]
    
    In [80]: list1.extend([2,4])
    In [81]: list1
    Out[81]: [0, 1, 3, 5, 7, 9, 11, 12, 2, 4]
    
    In [82]: list2 = [6,8]
    In [83]: list3 = list1+list2
    In [84]: list3
    Out[84]: [0, 1, 3, 5, 7, 9, 11, 12, 2, 4, 6, 8]
    

    リスト要素を削除するには、次の3つの方法があります.
  • 1、pop:リストの指定された場所から要素を削除し、返します.インデックスが指定されていない場合、pop()は最後の要素を返し、リストから削除します.
  • 2、remove:リストから指定した要素を削除し、なければエラーを報告します.
  • 、del:インデックスを使用してリストの一部を削除します.
  • In [91]: list1.pop(3)
    Out[91]: 7
    In [92]: list1
    Out[92]: [1, 3, 5, 9, 11]
    
    In [94]: list1.remove(5)
    In [95]: list1
    Out[95]: [1, 3, 9, 11]
    
    In [96]: del list1[1:3]
    In [97]: list1
    Out[97]: [1, 11]
    

    リストを反転するには、次の3つの方法があります.
  • 1、reverse:リスト内の要素をその場で並べ替える.
  • 2、reversed:関数はリストを反転し、listで
  • を変換する必要がある新しい反復器を返します.
  • 3、スライス結合負インデックス
  • In [99]: list1 = [1,3,5,7,9,11]
    In [100]: print(list1.reverse())
    [11, 9, 7, 5, 3, 1]
    
    In [102]: list2 = list(reversed(list1))
    In [103]: print(list2)
    [11, 9, 7, 5, 3, 1]
    
    In [105]: list1[::-1]
    Out[105]: [11, 9, 7, 5, 3, 1]
    

    リストのソートを実現するには、次の2つの方法があります.
  • 1、sort:リスト内の要素をその場でソートします.
  • 2、sorted:関数はリストを並べ替え、新しいリスト
  • を形成する.
  • 3、lambdaによるカスタム関数
  • この2つの方法はデフォルトで昇順であり、パラメータreverseでソート方法を変更できます.
    In [106]: list2 = [3,5,2,7,1]
    In [108]: list2.sort()
    In [109]: list2
    Out[109]: [1, 2, 3, 5, 7]
    
    In [116]: list3 = sorted(list2,reverse = True)
    In [117]: list3
    Out[117]: [7, 5, 3, 2, 1]
    #               
    In [141]: list4 = [(0, 3), (1, 1), (2, 4), (3, 2), (4, 5)]
    In [142]: print(sorted(list4,key = lambda x: x[1]))
    [(1, 1), (3, 2), (0, 3), (2, 4), (4, 5)]
    

    sortやreverseのようなリストをその場で処理する操作は,可変リストに対して可能であるが,可変の元祖であればsortedとreversedの2つの方式しか用いられない.
    コピーリストの3つの方法:
  • 1、スライスによる直接付与、浅いコピー
  • 2、copy方法、浅いコピー
  • 3、deepcopy方法、深コピー
  • In [25]: list2 = list1[:]
    In [26]: list3 = list1.copy()
    In [27]: import copy
    In [29]: list4 = copy.deepcopy(list1)
    

    深いコピーと浅いコピーの違いはデータ構造にかかわるため、口頭で述べるのは理解しにくいが、ネット上には多くの図例で説明されているブログがあり、皆さんは理解することができる.
    メタグループ
    メタグループとリストは非常に似ており、近親者のような関係があります.つまり、リストの多くの操作はインデックス、スライスなどのメタグループにも適用されますが、一部は異なります.ここでは主にメタグループの特別な点について説明します.
    まず、メタグループはロック付きリストとも呼ばれます.つまり、メタグループ内の要素は勝手に変更できません.たとえば、メタグループの要素に勝手に値を割り当てることはできません.
    In [2]: tuple1 = (1,2,3)
    In [3]: tuple1[2] = 4
    #     ,           
    TypeError: 'tuple' object does not support item assignment
    

    メタグループのフラグは単純なカッコではなく、カンマ、またはカッコとカンマの結合です.次の例を見てください.
    In [31]: tuple2 = (1)
    In [32]: type(tuple2)
    Out[32]: int
    In [33]: tuple3 = (1,)
    In [34]: type(tuple3)
    Out[34]: tuple
    In [35]: tuple4 = 1,2,
    In [36]: type(tuple4)
    Out[36]: tuple
    

    では、どのようにして空のメタグループを初期化しますか?
    In [39]: tuple5 = ()
    In [40]: type(tuple5)
    Out[40]: tuple
    

    メタグループは可変オブジェクトであり,append,insert,popのような操作は自然に行われないと述べた.メタグループの追加は「+」で実現でき、削除はpythonが独自の回収メカニズムであるためdelを利用することができる.
    In [42]: tuple5 = tuple5[:] + (1,2,3,4,)
    In [43]: tuple5
    Out[47]: (1, 2, 3, 4)
    
    In [50]: del tuple5 #     
    In [51]: tuple5
    NameError: name 'tuple5' is not defined
    

    「*」は数値型の間では積演算子であり、リストとメタグループの間では重複演算子として表すことができます.
    In [53]: tuple5 = (1,2)
    In [54]: tuple5 * 3
    
    Out[54]: (1, 2, 1, 2, 1, 2)
    

    しゅうごう
    コレクションは、無秩序で重複しない要素のセットです.基本機能には、リレーショナルテストと重複要素の除去が含まれます.集合オブジェクトは、結合、交差、差、対称差セットなどの数学的演算もサポートします.
    まず、カッコまたはset()関数を使用してコレクションを作成できます.空のコレクションを作成するには、{}ではなくset()を使用し、辞書を作成する必要があります.
    In [57]: set1 = set()
    In [58]: type(set1)
    Out[58]: set
    

    集合会自体にはデリバリー機能があります.
    In [55]: set1 = {1,1,2,2,3,3,4}
    In [56]: set1
    Out[56]: {1, 2, 3, 4}
    

    コレクションをカラムに変換すると、自動的にソートされます.
    In [74]: set2 = {5,5,4,2,2,0}
    In [75]: list_ = list(set2)
    In [76]: list_
    Out[76]: [0, 2, 4, 5]
    

    コレクション間のいくつかの演算操作.
    In [60]: set1 = {1,2,3,4}
    In [61]: set2 = {3,4,5}
    # 
    In [62]: set1 - set2
    Out[62]: {1, 2}
    # 
    In [63]: set1 | set2
    Out[63]: {1, 2, 3, 4, 5}
    # 
    In [64]: set1 & set2
    Out[64]: {3, 4}
    #  set1   set2 
    In [65]: set1 ^ set2
    Out[65]: {1, 2, 5}
    

    addを使用してコレクションに要素を追加し、removeを使用して要素を削除します.
    In [69]: set1 = {1,2,3}
    In [70]: set1.add(5)
    In [71]: set1
    Out[71]: {1, 2, 3, 5}
    
    In [72]: set1.remove(2)
    In [73]: set1
    Out[73]: {1, 3, 5}
    

    辞書
    辞書はPythonの非常に有用なオリジナルデータ型であり、一般的にシーケンスは連続的な整数をインデックスとし、辞書はキーワードをインデックスとし、キーワードは任意の可変タイプである.辞書を理解するときは、無秩序なキーと見なすことができます.値ペア(key:valueペア)の集合であり、同じ辞書でキーが互いに異なる必要があります.{}を使用して空の辞書を初期化できます.
    In [77]: dict1 = {}
    In [78]: type(dict1)
    Out[78]: dict
    

    キーが辞書にないことを確認したら、次の方法で辞書に要素を追加できます.
    In [81]: dict1 = {'a':1,'b':2}
    In [82]: dict1['c'] = 3
    In [83]: dict1
    Out[83]: {'a': 1, 'b': 2, 'c': 3}
    

    このキーが既に辞書に存在する場合は、このキーに値を割り当てることを示します.
    In [84]: dict1['b']=4
    In [85]: dict1
    Out[85]: {'a': 1, 'b': 4, 'c': 3}
    

    keys()メソッドは辞書内のすべてのキーを一度に取得することができ、values()メソッドは値を取得するために使用され、items()はキー値ペアを取得するメタグループ形式である.
    In [86]: list(dict1.keys())
    Out[86]: ['a', 'b', 'c']
    
    In [87]: list(dict1.values())
    Out[87]: [1, 4, 3]
    
    In [88]: list(dict1.items())
    Out[88]: [('a', 1), ('b', 4), ('c', 3)]
    

    可変性を維持するため、メタグループ形式またはリストにネストされたメタグループの形式は、辞書に変換できます.
    In [89]: dict2 = dict([('e',5),('f',6)])
    In [90]: dict2
    Out[90]: {'e': 5, 'f': 6}
    
    In [91]: dict3  = dict((('g',7),('h',8)))
    In [92]: dict3
    Out[92]: {'g': 7, 'h': 8}
    

    もちろん、'='割り当ての形式で辞書を作成することもできます.
    In [93]: dict5 = dict(i = 8,j = 9)
    In [94]: dict5
    Out[94]: {'i': 8, 'j': 9}
    

    キーがリストに存在するかどうかをクエリーします.
    In [96]: 'i' in dict5
    Out[96]: True
    
    In [97]: 'a' in dict5
    Out[97]: False
    

    キーに基づいて対応する値をクエリーする2つの方法:
  • 1、キーの名前インデックスを直接利用するには、辞書にこのキーがないとエラーが発生します.
  • 2、getメソッドを使用して、キー名が存在しない場合の戻り値を設定でき、デフォルトではNoneを返します.
  • In [98]: dict5['i']
    Out[98]: 8
    In [99]: dict5['a']
    KeyError: 'a'
    
    In [101]: dict5.get('i')
    Out[101]: 8
    In [103]: dict5.get('a',"  ")
    Out[103]: '  '
    

    辞書のいくつかの削除方法:
  • 1、pop()メソッドは、リストとは異なり、辞書に既存のキーを入力する必要があるパラメータです.
  • 2、popitem()は、辞書自体が無秩序であるため、リスト内のpop()と同様に、最後のキー値ペアのセットをランダムに削除します.
  • 、delメソッド、辞書全体を削除する
  • In [107]: dict3
    Out[107]: {'g': 7, 'h': 8}
    
    In [109]: dict3.pop('g')
    Out[109]: 7
    In [110]: dict3.popitem()
    Out[110]: ('h', 8)
    

    clear()メソッドは、辞書内のすべてのキー値ペアを明確にすることができます.
    In [104]: dict5.clear()
    In [105]: dict5
    Out[105]: {}
    

    setdefault()メソッドは、辞書に同じ名前のキーがある場合、辞書に対応する値を返します.そうしないと、辞書に入力されたキー値のペアが格納されます.
    In [115]: dict2
    Out[115]: {'e': 5, 'f': 6}
    
    In [117]: dict2.setdefault('e',1)
    Out[117]: 5
    
    In [118]: dict2.setdefault('g',7)
    Out[118]: 7
    In [119]: dict2
    Out[119]: {'e': 5, 'f': 6, 'g': 7}
    

    update()メソッドは、辞書を更新するために使用できます.
  • 辞書に入力されたキーがある場合、キーに対応する値が更新される.
  • がない場合、入力されたキー値のペアが辞書に格納されます.
  • In [121]: dict2.update({'g':10})
    In [122]: dict2
    Out[122]: {'e': 5, 'f': 6, 'g': 10}
    
    In [123]: dict2.update(dict1)
    In [124]: dict2
    Out[124]: {'e': 5, 'f': 6, 'g': 10, 'a': 1, 'b': 4, 'c': 3}
    

    まとめ
    上は5種類のデータ型の基本操作の1つの概括で、その中で比較的によく使う3種類は文字列、リストと辞書で、重点的に掌握すべきで、それからある仲間はきっとどうして表現式を書かなかったのか知りたいと思っていますか?焦らないで、後の文章にはきっとあるに違いない.上の基本操作は非常に基礎的であるべきで、必ず熟知して、しかも各データ型の特徴に注意して、互いに混同しないでください.
    公衆番号「キャラメル猫」に注目して、もっとすばらしい文章を手に入れてください.