python進級学習——独学ノート

34484 ワード

目次
  • 初心を学ぶ
  • 第一章
  • リスト、辞書、コレクションにおいて必要なデータをフィルタする
  • .
  • リスト:リスト解析がより良い
  • 試験データ
  • を生成する.
  • fliter関数
  • を使用
  • リスト解析
  • 辞書
  • 試験データ
  • を生成する.
  • 辞書解析
  • 集合
  • 試験データ
  • を生成する.
  • 集合解析
  • は、データの可読性を向上させるためにメタグループに命名された
  • である.
  • 定義定数代替列挙量
  • 試験データ
  • を生成する.
  • 定数
  • を定義する
  • namedtuple(tupleの内蔵サブクラス)
  • を使用
  • 工場
  • の導入と生成
  • namedtupleとアクセス
  • を生成する
  • 統計シーケンスの要素の出現回数
  • 反復積算法
  • 試験データ
  • を生成する.
  • 統計結果を格納辞書
  • を生成する.
  • 反復累積
  • Collections.Counter
  • 構築パッケージクラスCounrer:このcounterにはすでに統計結果が
  • あります.
  • most_commentのサブメソッドを使用:出現頻度が最も高い3つのリスト
  • を見つける.
  • 辞書のカスタムソート
  • 内蔵関数sort
  • 試験データ
  • を作成する
  • zip
  • を使用
  • はlambda関数
  • に結合する
  • 複数の辞書の共通キーを見つける
  • 試験データ
  • を生成する.
  • 用&公共健
  • を求めます
  • は辞書に対して秩序を保つ:辞書
  • を入力順に記録する.
  • collections.OrderedDict
  • ユーザの履歴(有限ログ)
  • を実現
  • collections.deque
  • は、記録保存および読み出し
  • を実現する.
  • 第2章
  • 反復オブジェクトの生成と順方向反復
  • collectionsのiteratableとiterator
  • を使用
  • ジェネレータ関数
  • ジェネレータ関数を含むクラスのパッケージ
  • 順方向反復および逆方向反復
  • case説明
  • 用例説明
  • 反復器のスライス操作
  • itertools.islice
  • 並列反復および直列反復
  • zip関数を使用して、マージ後の反復
  • itertools.chian
  • を使用
  • 第三章
  • 複数の区切り文字処理文字列
  • 用re.split
  • 文字列接合
  • 文字列フォーマット:左中右
  • 文字列削除指定内容
  • 第四章
  • csvデータの読み書き
  • 読み書きjsonデータ
  • 初心を学ぶ
    規範学習pythonは、後続の機械学習に基礎を築くと考えている.
    第一章
    リスト、辞書、コレクションで必要なデータをフィルタ
    リスト:リストの解析がより良い
    テストデータの生成
    from random import randint
    data = [randint(-10,10) for _ in range(10)]
    

    fliter関数の使用
    for i in ( filter(lambda x : x >=0,data)):
        print(i)
    

    リスト解析
    [x for x in data if x>=0]
    

    辞書
    テストデータの生成
    from random import randint
    dict = {x :randint(60,100)for x in range(1,21)}
    

    ディクショナリ解析
    {k:v for k,v in dict.items() if v>90 }
    

    しゅうごう
    テストデータの生成
    from random import randint
    s = set ( [ randint(-10,10) for _ in range(10)] )
    

    集合解析
    {x for x in s if x>0}
    

    データの可読性を向上させるためにメタグループに名前を付ける
    データ構造は固定され、メタグループが使用されます.しかしindexはメタグループの内容にアクセスし、非常に不便です.
    列挙の代わりに定数を定義する
    テストデータの生成
    student = ('Jax',20,'male','201764681188')
    

    定数の定義
    NAME,AGE,SEX = 0,1,2
    student[NAME]
    

    namedtuple(tupleの内蔵サブクラス)の使用
    工場のインポートと生成
    from collections import namedtuple
    Student = namedtuple('Student',['name','age','male','ID'])
    

    namedtupleの生成とアクセス
    s = Student('jax',16,'m','2017')
    s.name
    

    統計シーケンス内の要素の出現回数
    反復積算法
    テストデータの生成
    data = [ randint(0,20) for _ in range(30)]
    

    統計を格納する辞書の生成
    ans = dict.fromkeys(data,0)
    

    反復累積
    ans = dict.fromkeys(data,0)
     for x in data:
            ans[x]+=1
    

    Collections.Counter
    パッケージクラスCounrerの構築:このcounterには統計結果があります
    c2 = Counter(data)
    

    most_commentのサブメソッドを使用する:出現頻度が最も高い3つのリストを見つける
    c2.most_comment(3)
    

    辞書のカスタムソート
    内蔵関数sort
    テストデータの作成
    from random import randint
    dict = {x:randint(60,100) for x in 'xyzabc'}
    

    zipの使用
    sorted(zip(dict.values(),dict.keys()))
    

    コンビネーションlambda関数
    sorted(dict.items(),key = lambda x : x[1])
    

    複数の辞書の共通キーを見つける
    テストデータの生成
    round1 =  {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
    round2 =  {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
    round3 =  {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
    

    公共の健を求めます
    round1.keys()&round2.keys()&round3.keys()
    

    ディクショナリの順序付け:入力順にディクショナリを記録します.
    collections.OrderedDict
    from collections import OrderedDict
    d = OrderedDict()
    d[key] = value;
    
    

    ユーザーの履歴の実装(有限ログ)
    collections.deque
    from collections import deque
    q = deque([],queueSize)
    q.apend(record)
    

    記録の保存と読み取りを実現
    保存#ホゾン#
    import pickle
    pickle.dump(q,open('history','w'))
    

    読み取り
    q2 = pickle.load(open('history'))
    

    第二章
    反復オブジェクトの生成と順方向反復
    反復可能オブジェクト(list,string)から反復器オブジェクトiter()を得る
    collectionsのiteratableとiteratorの使用
    skip
    ジェネレータ関数
    ジェネレータ関数を含むクラスのパッケージ
    class PrimeNumbers:
        def __init__(self,start,end):
            self.start = start
            self.end = end
    
        def isPrimeNum(self,k):
            if k<2:
                return False
            
            for i in range(2,k):
                if k%i == 0:
                    return False
            return True
    
        #  __iter__  , PrimeNumbers   
        def __iter__(self):
            for k in range(self.start,self.end+1):
                if self.isPrimeNum(k):
                    yield k
    
    

    テストプログラム
    for x in PrimeNumbers(1,100):
        print(x)
    

    順方向反復と逆方向反復
    ケース説明
    from collections import Iterable,Iterator
    l = [1,2,3,4,5]
    #  
    for x in iter(l):
        print(x)
    #  
    for x in reversed(l):
        print(x)
    
    

    実際には、順方向反復にはインタフェース__init_()が必要であり、逆方向反復にはインタフェース__reversed_()が必要である.
    使用例の説明
    浮動小数点ジェネレータ
    
    class FloatRange:
        def __init__(self,start,end,step=0.1):
            self.start = start
            self.end = end
            self.step = step
        
        def __iter__(self):
            t = self.start
            while t <= self.end:
                yield t
                t +=self.step
    
        def __reversed__(self):
            t = self.end
            while t >= self.start:
                yield t
                t -=self.step
    
    for i in FloatRange(1.0,4.0,0.5):
        print(i)
    
    print('-'*6)
    
    for i in reversed( FloatRange(1.0,4.0,0.5) ):
        print(i)
    
    
    

    反復器のスライス操作
    itertools.islice
    #islice     f    
    from itertools import islice
    #f      ,   none  
    for line in islice(f,100,300):
    	print(line)
    

    並列反復と直列反復
    zip関数を使用して、マージ後の反復
    #zip   ,for   
    for c,m,e in zip(chinese,math,english):
    	print(...)
    

    itertools.chianの使用
    for x in chain([1,2,3,4],[5,6,7]):
    	print(...)
    

    第三章
    複数の区切り文字列
    string.splitで区切り文字が1つしか含まれない場合
    re.splitで
    s = "abc,ef;gi"
    import re
    print(re.split(r'[,;]+',s))
    

    文字列の結合
    ''.join(['abc','123','45'])
    #  join         ,       
    list = ['abc',123,45]
    ''.join(str(x) for x in list)
    

    文字列フォーマット:左中右
    'abc'.ljust(20)
    
    

    文字列削除指定
    #      
    s = '   abc\t\r   123   '
    s.strip()
    #s = '---abc   123+++'
    #s.strip(r'-+')
    
    #    
    s[:3]+s[5:]
    
    #replace
    s.replace(' ','')
    
    #  re.sub
    import re
    re.sub('[\t\r]','',s)
    
    
    

    第四章
    csvデータの読み書き
    import csv
    rf = open('1.csv','rb')
    #reader  1.csv     
    reader = csv.rader(rf)
    
    wf = open('2.csv','wb')
    writer = csv.writer(wf)
    weiter.writerow(...)
    
    

    jsonデータの読み書き
    #python->jason
    l  = ['1','2',"abc"]
    j1 = json.dumps(l)
    
    #jason->python
    l2 = jason.loads(j1)