[Python学習コース]--Pythonベースno.06

7319 ワード

前回学んだことを振り返ると、Pythonに戻り値、戻り値なし、パラメータあり、パラメータなしの関数があることが簡単に分かりました.本節ではPythonのlist,tuple,dict,setという複合的な高度なデータ型について学習する.
1. List
listは秩序化された集合です.Arrayのように、x番目の要素にアクセスするために[x]の形式を追加することができる.ここで、xは負数であってもよく、負数である場合、最後から数番目を表す.たとえばlist[-1]はlistの最後から最初の要素を表します.
Listの関連操作関数
Method
Description
list.append(x)
リストの末尾に要素を追加します].
list.extend(L)
指定したリストのすべての要素を追加することで、リストを拡張します.
list.insert(i, x)
指定した場所に要素を挿入します.最初のパラメータは、a.insert(0,x)がリスト全体の前に挿入されるなど、その前に挿入される要素を準備するインデックスであり、a.insert(len(a),x)はa.append(x)に相当する.
list.remove(x)
リストの値がxの最初の要素を削除します.このような要素がない場合は、エラーが返されます.
list.pop([i])
リストの指定した場所から要素を除去し、返します.インデックスが指定されていない場合、a.pop()は最後の要素を返します.要素がリストから削除されます
list.clear()
リスト内のすべてのアイテムを削除します.
list.index(x)
リストの最初の値がxの要素のインデックスを返します.一致する要素がない場合は、エラーが返されます.
list.count(x)
xがリストに表示される回数を返します.
list.sort()
リスト内の要素をソートします.
list.reverse()
リスト内の要素を並べ替えます.
list.copy()
リストの浅いコピーを返します.
# List   


a = [66.66, 777, 777, 1, 131.13]
# count
print("a.count(777), a.count(66.66), a.count(2)")
print(a.count(777), a.count(66.66), a.count(2))
print(a)

# insert
print("a.insert(2, -1)")
a.insert(2, -1)
print(a)
# append
print("a.append(777)")
a.append(777)
print(a)
# index
print("a.index(777)")
print(a.index(777))
print(a)
# remove
print("a.remove(777)")
a.remove(777)
print(a)
# reverse
print("a.reverse()")
a.reverse()
print(a)
# sort
print("a.sort()")
a.sort()
print(a)
FANGQIdeMacBook-Pro:PythonStudy fangqi$ python3 ex16.py 
a.count(777), a.count(66.66), a.count(2)
2 1 0
[66.66, 777, 777, 1, 131.13]
a.insert(2, -1)
[66.66, 777, -1, 777, 1, 131.13]
a.append(777)
[66.66, 777, -1, 777, 1, 131.13, 777]
a.index(777)
1
[66.66, 777, -1, 777, 1, 131.13, 777]
a.remove(777)
[66.66, -1, 777, 1, 131.13, 777]
a.reverse()
[777, 131.13, 1, 777, -1, 66.66]
a.sort()
[-1, 1, 66.66, 131.13, 777, 777]

2. Tuple
もう1つのシーケンステーブルはメタグループ:tupleと呼ばれます.tupleはlistと非常に似ていますが、tupleは初期化すると修正できません.
>>> a = ('aaa', 'bbb', 'ccc')

今、aというtupleは変えることができなくて、append()、insert()のような方法もありません.他の要素の取得方法はlistと同様であり、a[0],a[−1]を正常に使用することができるが、他の要素に値を割り当てることはできない.tupleは可変ではないので、コードはもっと安全です.できればlistの代わりにtupleを使えばできるだけtupleを使います.
# tuple


a = (1, 2, 3, 1)
print("a.count(1), a.count(2), a.count(4)")
print(a.count(1), a.count(2), a.count(4))
print(a)
print("a[0], a[1], a[-2]")
print(a[0], a[1], a[-2])

print("a.index(3)")
print(a.index(3))
FANGQIdeMacBook-Pro:PythonStudy fangqi$ python3 ex17.py 
a.count(1), a.count(2), a.count(4)
2 1 0
(1, 2, 3, 1)
a[0], a[1], a[-2]
1 2 3
a.index(3)
2

Listと比較したtupleの違い
  • tupleは修正できませんが、+オペレータ
  • をつなぎ合わせることができます.
  • tuple特定の要素を削除することはできませんが、tuple全体を削除することができます.del tuple
  • を使用します.
  • tupleメソッドはindex()とcount()
  • のみです.
    3. Dict
    Pythonには辞書:dictのサポート、dictフルネームdictionaryが内蔵されており、他の言語ではmapとも呼ばれ、キー値(key-value)で格納され、検索速度が極めて速い.たとえば、同級生の名前に基づいて対応する成績を検索する場合、listで実現するには2つのlistが必要です.
    names = ['Michael', 'Bob', 'Tracy']
    scores = [95, 75, 85]
    

    名前を付けて、対応する成績を検索するには、namesで対応する位置を見つけてからscoresから対応する成績を取り出し、listが長ければ長いほど時間がかかります.dictで実現すると、「名前」-「成績」の対照表が1つ必要で、名前に基づいて成績を直接検索すると、この表がどんなに大きくても、検索速度は遅くなりません.Pythonでdictを次のように書きます.
    >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    >>> d['Michael']
    95
    

    なぜdict検索速度がこんなに速いのですか?dictの実現原理は辞書を引くのと同じだからだ.仮に辞書に1万個の漢字が含まれているとしたら、ある字を調べます.1つの方法は辞書を1ページ目から後ろにひっくり返して、私たちが欲しい字を見つけるまで、リストの中で要素を探す方法です.リストが大きいほど、検索が遅くなります.第2の方法は、まず辞書のインデックス表(例えば部首表)でこの字に対応するページ番号を調べてから、直接このページにめくって、この字を見つけて、どの字を探しても、この検索速度は非常に速く、辞書の大きさが増えるにつれて遅くなることはありません.dictは第2の実装形態であり、「Michael」のような名前を与え、dictは内部でMichaelに対応する格納成績の「ページ番号」、つまり95という数字が格納されたメモリアドレスを直接計算することができ、直接取り出すことができるので、速度が非常に速い.このkey-value格納方式は、入れるときにkeyに基づいてvalueの格納位置を算出しなければならないと推測できます.そうすれば、取るときにkeyに基づいて直接valueを手に入れることができます.
  • del操作
  • a = {'Name': 'xiao7', 'Age': 1, 'Class': 'First'}
    
    del a['Name']  #     'Name'
    print(a)
    

    Pythonのdictには、次の内蔵関数が含まれています.
    シーケンス番号
    関数#カンスウ#
    説明
    1
    len(dict)
    辞書要素の個数、すなわちキーの総数を計算します.
    2
    str(dict)
    印刷可能な文字列で辞書を出力します.
    3
    type(variable)
    入力した変数タイプを返し、変数が辞書の場合は辞書タイプを返します.
    Pythonのdictには、以下の組み込み方法が含まれています.
    シーケンス番号
    関数と説明
    1 radiansdict.clear()辞書内のすべての要素を削除
    2 radiansdict.copy()は、辞書の浅いコピーを返します.
    3 radiansdict.fromkeys()新しい辞書を作成し、シーケンスseqの要素を辞書のキーとし、valは辞書のすべてのキーに対応する初期値である.
    4 radiansdict.get(key, default=None)は、指定されたキーの値を返します.値がディクショナリでdefault値を返さない場合は
    5 key in dictキーが辞書dictにtrueを返すとfalseが返されます.
    6 radiansdict.items()は、巡回可能な(キー、値)メタセット配列をリストで返す
    7 radiansdict.keys()は、リスト()を使用してリストに変換できる反復器を返します.
    8 radiansdict.setdefaultはget()と似ていますが、キーが辞書に存在しない場合はキーが追加され、値がdefaultに設定されます.
    9 radiansdict.update(dict2)辞書dict 2のキー/値ペアをdictに更新
    10 radiansdict.values()は、リスト()を使用してリストに変換できる反復器を返します.
    11 pop(key[,default])辞書によって与えられたキーに対応する値を削除し、削除された値を返す.key値は指定する必要があります.そうでない場合はdefault値を返します.
    12 popitem()は、辞書のキーと値のペアをランダムに返し、削除します(一般的には末尾のペアを削除します).
    4. Set
    コレクション(set)は、無秩序な重複しない要素シーケンスです.カッコ{}またはset()関数を使用してコレクションを作成できます.空のコレクションを作成するには、{}ではなくset()を使用する必要があります.なぜなら、{}は空の辞書を作成するために使用されるためです.
    >>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    >>> print(basket)                      #           
    {'orange', 'banana', 'pear', 'apple'}
    >>> 'orange' in basket                 #             
    True
    >>> 'crabgrass' in basket
    False
     
    >>> #             .
    ...
    >>> a = set('abracadabra')
    >>> b = set('alacazam')
    >>> a                                  
    {'a', 'r', 'b', 'c', 'd'}
    >>> a - b                              #   a      b       
    {'r', 'd', 'b'}
    >>> a | b                              #   a b        
    {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
    >>> a & b                              #   a b        
    {'a', 'c'}
    >>> a ^ b                              #       a b   
    {'r', 'd', 'b', 'm', 'z', 'l'}
    

    Pythonのsetには、次のような内蔵関数が含まれています.
    シーケンス番号
    関数#カンスウ#
    説明
    1
    add()
    追加要素s.add("abc")2
    update()
    追加要素s.update(abc)3
    remove()
    要素の削除s.remove(abc)注意:要素が存在しない場合はエラーが表示されます.
    4
    discard()
    要素を削除s.discard(abc)注意:要素が存在しない場合はエラーは発生しません
    5
    pop()
    要素をランダムに削除し、その値x = s.pop()を返します.
    6
    in x in sが存在するか否かを判断し、戻りTrueが存在する場合、戻りFalseは存在しない