Python 3基礎学習ノート


入門は熟練しやすいが、どの言語もそうである.c言語の基礎を頼りにpython言語の特性を身につける差は多くないと感じて、結局本当にコードを叩く時まで、どこから手をつけるか分からないで、また時々補習しなければなりません.もう一度系統的に見て、独学しながらメモを取るべきだと思います.ブログに投稿すると、メモをもう一度整理して、印象を深めることになります.
独学は主に「python初心者プログラミングガイド」と廖雪峰の公式サイトで、メモも主に抜粋した.特に廖先生のオンラインチュートリアルは、私にとても役に立ちました.ここで特に感謝します.皆さんにもおすすめのサイトはこちら
特别に、さっきはもうすぐ完成して、结局火狐は力がなくて再开して、木は保存してああうううとコードを书いてctrlsがなくて直接IDEを闭じたように、あれはどんな寝台ですか今回は要点だけを拾って书きました.
一、コード
python 3の文字列はunicodeで符号化されている.単一文字の符号化ord()関数は文字の整数表現を取得し,chr()関数は符号化を対応する文字に変換する
     >>> chr(66)     'B'           >>> chr(25991)     ' '

2.Pythonの文字列タイプはstrで、メモリにはUnicodeで表され、1文字には数バイトが対応しています.ネットワーク上で転送したり、ディスクに保存したりするには、strをバイト単位のbytesに変更する必要があります.
       string=“123”     //string str                                              string=b“123”    //string bytes  

Unicodeで表されるstrはencode()法により指定されたbytesに符号化できる
    string=“123”  print(string。encode(“utf-8”))    b'123'

3.純粋な英語のstrはASCIIでbytesと符号化することができ、内容は同じで、中国語を含むstrはUTF-8でbytesと符号化することができる.中国語を含むstrはASCII符号化できない.中国語符号化の範囲がASCII符号化の範囲を超えているからだ.
4.逆に、ネットワークまたはディスクからバイトストリームを読み込んだ場合、読み込まれたデータはbytesです.bytesをstrにするにはdecode()メソッドが必要です
二、文字列の方法
文字列は各プログラミング言語で重点的に処理されるオブジェクトで、pythonのメソッドNoneがpythonで「なし」であることを見てみましょう.
quote="I'm runner" ,
quote.upper()   "I'M RUNNER",
quote.lower()   "i'm runner"
quote.title()    "I'm Runner"
quote.replace("I'm","you're")    “you're runner”

他にもいくつかの方法があります.
  • swapcase()文字列の大文字と小文字を
  • に置き換えます.
  • captalize()文字列の頭文字を大文字で残りの小文字
  • join()
                    letter=['f','d','h','f']
                    spl="#"
                    print spl.join(letter)
                      ,f#d#h#f
    
    split関数はjoinとは逆「f#d#h#f」である.split(“#”)
  • strip()関数文字列の先頭文字を除去するためにパラメータがない場合にスペース記号
  • を除去する
  • startswith(values)とendswith(values)関数はvaluesの先頭または末尾、戻り値はTrue、またはFalse
  • です.
  • find(substr[,start][,end])とrfind(substr[,start][,end])
  • replace(old, new[, count])
  • makestrans(intable,outable)translate(table,del)table makestransからdelを生成する除外する文字
  • 三、入出力
    python 3はinput()のみがstringタイプを返しprint([object,...],sep='''''[,end=']][,file=sys.stdout])print()print(values,end=')print(values,file=filename)のみを返します
    四、タプルとリスト
  • len()演算子
  • in演算子
  • インデックス
  • スライスの上の4つの操作はメタグループで、リスト、辞書は共有して、集合(set)はインデックスの属性がなくて、辞書はkeyインデックスを通じて
  • 空のメタグループtuple=()またはtuple=tuple()tupleが初期化されるとappend()がないinsert()のような方法は変更できません.インデックスは正常に使用できますが、別の要素に値を割り当てることはできません.可変
  • 空のリストリストリストリスト=list()またはlist=[]
  • を作成
  • list.append(value)list末尾
  • に値valueを追加
  • list.remove(value)削除リストに最初に表示されたvalue//削除に存在しない値にエラーが発生します.
  • の代わりにpop(i)を使用することもできます.
  • list.sort()は要素をソートし、デフォルトの小さな値は前、オプションのパラメータreverseはbool値、trueに設定すると大きな値で前に
  • 並べ替えます.
  • list.reverse()反転要素の順序
  • list.count(value)はvalueの出現回数
  • を返す.
  • list.index(value)はvalueが初めて現れた位置番号を返し、リストにない場合は
  • とエラーを報告する.
  • list.insert(i,value)位置i
  • にvalueを挿入する
  • リストおよびタプルは、互いにネストすることができる
  • 二次元配列多次元配列
  • 五、辞書と集合
  • 空の辞書dic={}またはdic=dict()を作成
  • keyで辞書インデックスを使用keyが存在しない場合、dictは1つはinでkeyが存在するかどうかを判断することであり、2つはdictによって提供されたgetメソッドであり、keyが存在しない場合はNone、または自分で指定したvalue
  • に戻ることができる.
  • keyを削除するにはpop(key)メソッドを使用し、対応するvalueもdictから
  • を削除します.
  • dictのkeyは可変オブジェクトでなければなりません.
  • キーが辞書内にあるか否かを先に判断する、そうでなければ修正可能であり、そうでなければ追加可能であり、1つのキー値対を削除するinでキーが辞書内にあるか否かを判断する
  • .
  • 空の集合を作成するにはset=set()でしか空でない集合を作成するにはカッコsetでは無秩序であり、重複要素を含まない構造である
  • は、一般的に、ある要素がすでに含まれているかどうかをテストするために使用されるか、または多くの要素を再利用するために使用される.
  • 数学中の集合論と同様に、彼が支持する演算は交差し、差、対称差がある.
  • setはdictと同様であり、keyのセットでもあるがvalueは格納されない.keyは繰り返すことができないのでsetでは繰り返すkeyはありません.
  • add(key)メソッドsetに要素を追加できるremove(key)メソッド
  • 要素を削除できる
  • は可変オブジェクトを入れてはいけません.2つの可変オブジェクトが等しいかどうかを判断できないため、set内部に「重複要素がない」ことを保証できません.

  • スタックは、リスト実装append()およびpop()メソッドキュー実装を用いて、リストではなくcollectionsを用いる.Deque、タワーは、ヘッダーとテールの両端に迅速に挿入および削除するために設計された
     
    from collections import deque
    queue1=deque()
    queue2=deque([values1,values2,values3])
    queue3=deque(maxlen=10)
    queue.append(value)
    queue.popleft() ( )
    queue.pop() ,
  • 六、関数
  • pass文は何もしないでプレースホルダとして使用することができます.例えば、関数のコードを書く方法がまだ考えられていない場合は、まずpassを置いて、コードを実行することができます.
  • は複数の値を返す実は1つのtupleを返すので、パケットを解く時注意して1つ1つ
  • に対応します
  • 関数では宣言せずにグローバル変数の値を読み取ることができますが、global宣言global Valueを変更することはできません.グローバル変数Valueの値を変更することができます.関数にグローバル変数と同じ名前の変数を再命名すると、グローバル変数が
  • スクリーン表示されます.
  • 関数パラメータ伝達の3つの方式:
  • func ( arg1=1, arg2=2 ) 
    func ( *args )               args      tuple,   
    func ( **args )              args      dic
    def func(x,y,*a,**b):
         x=1
         y=2
         print(x,y,a,b)
    func(1,2,3,4,5,6,7,e=3,t=5,s=1)
      :
    1 2 (3, 4, 5, 6, 7) {'t': 5, 'e': 3, 's': 1}
    
           :
        abs(number):         。
        chr(number):ASCII      ,     order
        divmod(num1, num2):      ,    tuple. divmod(10,3)=(3,1)
        eval(source[, globals[, locals]]):      
        excefile(object[, globals[, locals]]):exec                 Python  。
             :exec('print("abc")')   'abc'
        filter(function or None, list): list     function    。function ,           ,    True,   False。
        len(object):           
        map(function, iterable_objects):              (   )    ,         ,        。
        max():    
        min():    
        ord(character):     ASCII ,     chr
        pow(x, y[, z]):  (z       )
        range():      
        repr(object):         ,        eval(repr(object))    
        sum(list):        
        type(object):        
        range([start,] stop[, step]) -> range object:    。
        round(number[, ndigits]) -> number:               
        hex(number):           
        oct(number):          
        int(str):         
        float(object):         。
        str(object):         
    
    
    

    七、ジェネレータ(generator)と反復器(Iterator)
    八、map()、fliter()&sorted()とlambda()
    map()関数:2つのパラメータを受信し、1つは関数であり、1つはIterableであり、mapは入力した関数をシーケンスの各要素に順次作用させ、結果を新しいIteratorとして返す.
    def f (x):
        return x*x
    a=[1,2,3,4,5,6,7]
    print (list(map(f,  a )))          list  tuple,set      //  [1,4,9,16,25,36,49]
    print (list(map(str,  a )))     //  ['1', '2', '3', '4', '5', '6', '7']
    

    map関数の戻り値をlist()でさらに処理してlistオブジェクトにすることがしばしば必要です.(python 3)map(function,sequence)は、mapもlambdaと一緒によく使われる(強制格を高める).fliter関数はmap()と同様であり、filter()も関数とシーケンスを受信する.map()と異なる場合、filter()は入力された関数を各要素に順次適用し、戻り値がTrueかFalseかに基づいて要素を保持または破棄するかを決定します.
    sorted()
    >>> sorted([36, 5, -12, 9, -21])
    [-21, -12, 5, 9, 36]
    
    >>> sorted([36, 5, -12, 9, -21], key=abs)
    [5, 9, -12, -21, 36]          //abs            ,       
    //  abs abs()    
    
    >>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
    ['Zoo', 'Credit', 'bob', 'about']
    
    
    L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    def by_name (li):       // li      , tuple
        return li[0]
    def by_score(li):       
        return li[1]
    print (sorted(L,key=by_name))
    print (sorted(L,key=by_score))
      :
    [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
    [('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
    

    Lambda()関数の匿名関数には、returnを書く必要がなく、戻り値が式の結果になるという制限があります.
    >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    
          :
    def f(x):
        return x * x