Pythonブラシ問題実用小tips集合(継続更新)

22693 ワード

いくつかpythonのよく使う技巧、とても便利にいくつかの基本的な機能を実現することをマスターしました.全配列12.異或15.互換行列
コンテンツのナビゲーション:
  • 1. ハッシュ表定義:
  • 2. map関数
  • 3. ordとchr
  • 4. 範囲制限32バイトの文字列数1行コード出力
  • 5. 2 Dマトリクスの転置(zipの1行コードを用いる)
  • 6. 2 Dマトリクスの高速初期化
  • 7. 2 Dマトリクスの高速list化
  • 8. 双方向キューのデフォルト実装
  • 9. 快速全配列羅列
  • 10. 辞書の最大値のキー
  • が見つかりました.
  • 11. 統計リストに表示される数
  • 12. 異種またはいくつかの騒乱操作
  • 13. 再帰的理解について(知乎転載)
  • 14.filter関数は配列中の要素
  • の一部をフィルタリングする.
  • 15.2 Dマトリクスの行列交換、
  • の削除
  • 16.右シフト1ビットと除算2操作の関係
  • 1.ハッシュ表定義:
    dict={},pythonでは辞書と呼ばれ,値を調べるキー
  • はキーと値が対応する必要があり、ペアが現れ、
  • が繰り返すキーは、
  • の代わりに後続の値に置き換えられる.
    辞書にあるかどうかを判断するには、キーワードinを使用して組み合わせることができます.例えば、if a in dict:
    詳細リファレンスhttps://www.cnblogs.com/scios/p/8108243.html
    2.map関数
    関数をコレクションにマッピングするために使用します
    def f(x):
        return x*x
    print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])[1, 4, 9, 10, 25, 36, 49, 64, 81]
    

    詳細リファレンスhttps://www.cnblogs.com/lincappu/p/8179475.html
    3.ordとchr
    ordは、単一文字ASCII符号値chrを得るために用いられ、ASCII符号値に対応する文字を得るために用いられる
    >>> ord('d')
    100
    
    >>> chr(100)
    'd'
    

    詳細リファレンスhttps://blog.csdn.net/hk_john/article/details/77990585
    4.範囲制限32バイトの文字列数1行コード出力
    return max(-2 ** 31, min(sign * ret, 2 ** 31 - 1))
    

    5.2 Dマトリクスの転置(zipの1行コードを使用)
    return list(map(list,zip(*array)))
    

    6.2 Dマトリクスの高速初期化
    # dim1, dim2            ,    0,           
    aarray = [ [0] * dim1 for i in range(dim2)]
    

    7.2 Dマトリクスの高速list化
    #    :      
    from itertools import chain
    list(chain(*res))
    
    #    :    
    >>>ab = [[1,2,3], [5,8], [7,8,9]]
    >>>print([i for item in ab for i in item])
    [1, 2, 3, 5, 8, 7, 8, 9]
    

    8.双方向キューのデフォルト実装
    #      leftappend    ,2019                  
    import collections
    d = collections.deque()
    

    9.快速全配列羅列
    私が間もなくバイトのジャンプの実習に行く良い友达のあげる良いものに感謝して、とても実用的で、彼のブログの住所を置いて、具体的に各位は各会社の面接問題が暴力的に解読する必要がある時全列の便利さを感じることができて、markを提案します
    #   list:123,          
    # list map          tuple          
    >>>import itertools
    >>>result = list(map(list, itertools.permutations([1,2,3])))
    [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
    

    10.ディクショナリで最も値の大きいキーを見つける
    #    ,    
    res = max(d,key=d.get)
    #    ,        
    #    d.items()     d        
    # items()               
    #    key     lambda                         
    # lambda x:y x      ,y  lambda       
    d = sorted(d.items(), key=lambda item: item[1])
    res = d[-1][0]
    

    11.リストに表示される数の統計
    # most_common(   n   ,     ,     )
    >>>numbers = [1,2,3,2,4,2,5,2,3]
    >>>from collections import Counter
    >>>count = Counter(numbers).most_common()
    [(2, 4), (3, 2), (1, 1), (4, 1), (5, 1)]
    
    

    12.異種またはいくつかの騒々しい操作
    1.基本的性質
    0 ^ n = n
    n ^ n = 0
    

    2.三次異或いは交換の二つの数
    >>>a, b = 1, 2
    >>>a = a ^ b
    >>>b = a ^ b
    >>>a = a ^ b
    >>>print a, b
    2 1
    

    13.再帰的理解について(転載を知っている)
    辞書を引く比喩を見たことがあるのはいいですね.1冊の純粋な英語の辞書で単語を調べることを想像して、ある単語の意味を調べて、この単語をひっくり返す時、解釈を見て、解釈の中に1つの単語が知らないことを発見して、だから、この調べる単語がどんな意味なのか理解できません;このとき、この辞書(関数そのもの)で知らない単語を調べてみると、2番目の単語の解釈にもう1つの単語が認識されていないことがわかります.では、この辞書で3番目の知らない単語を調べてみると、1つ1つ調べて、解釈中のすべての単語が認識されるまで、最後の単語がどういう意味なのかがわかります.そして1段1段戻して、私が最初に調べたい1番目の単語がどういう意味なのかを知って、問題は解決しました.
    作者:李ooリンク:https://www.zhihu.com/question/31412436/answer/77766824出典:著作権は作者の所有であることを知っている.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.
    14.filter関数配列内の要素の一部をフィルタリングする
    def is_odd(n):
        return n % 2 == 1
     
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(newlist)
    #   :1,3,5,7,9
    

    15.2 Dマトリクスでの行列の入れ替え、削除
    numpy配列によってこの機能を容易に実現することができ、煩雑な操作を避けることができ、後続の操作の便利さのために、サブメソッドの使用を推奨する.tolist()ndarrayをistタイプに変換
    import numpy as np
    array = np.array([[1,2,3], [4,5,6],[7,8,9]])
    #   1,3 
    array = array[:,[2,1,0]]
    #        
    array = np.row_stack((array, [7,8,9]))
    array = np.column_stack((array, [7,8,9]))
    

    16.右シフト1ビットと除算2操作の関係
    簡単にまとめると、非負の数を2つ除くと下に整頓され、整数を2つ除くとゼロに整頓される.ほとんどの場合、両者が等価に啓蒙されたアドレスが詳細に証明されたアドレス