10の驚くほど便利な基本的なPython関数

画像



Pythonを使用する人は、この言語がその広大なエコシステムのために優れていることを知っています。プログラミング言語は、メインの機能に新しい機能を追加する素晴らしいパッケージがなければ、特別なことでは目立たないとさえ言えます。



NumPyはその一例です。マトリックスツールは基本的なPythonでも問題ありませんが、NumPyを使用すると何倍も改善されます。さらに、この言語には、さらに機能的にするいくつかの優れた機能があります。これらの機能を使用することで、依存関係の数を減らし、時間を解放し、開発プロセス自体を簡素化できます。これらの可能性が何であるかを見てみましょう。



ちなみに、MTSのPython部門のリーダーであり、SkillboxのPython部門のプログラムディレクターであるAlexey Nekrasovは、いくつかの機能についてアドバイスを追加しました。翻訳がどこにあり、コメントがどこにあるかを明確にするために、後者をテキストで強調します。



#1ラムダ



私はかつて、ラムダがPythonを統計計算に最適なプログラミング言語にする理由についての記事全体を書きました。この機能のおかげで、数学演算は、関数全体を使用するのではなく、式を評価することで、ほとんどすべてのタイプのデータに適用できます。



これにより、クラス構造がまだ残っている言語で、定義をグローバルに導入し、機能的な構文や方法論を導入することができます。



これにより、プログラムの作成にかかる時間を節約し、リソースを節約し、コードをより簡潔にすることができます。さらに、ラムダを使用すると、apply()などのメソッドを使用して、データのすべてのサブセットに式をすばやく適用できます。データサイエンティストにとって、そしてこの職業の代表者にとってだけでなく、そのような機会は非常に役に立ちます。



構文は次のとおりです。ラムダ式の戻り値から始めて、位置引数として指定する変数が続きます。その後、この引数を変数として使用して操作を実行します。



mean = lambda x : sum(x) / len(x)
      
      





これで、Pythonの他のメソッドと同じように、呼び出しを行うことができます。



x = [5, 10, 15, 20]
print(mean(x))
      
      





Alexeyのコメント:



コードの可読性を損なわないようにラムダに注意してください。ここにいくつかのヒントがあります:

PEP8から。ラムダ式を識別子に直接バインドする代入演算子の代わりに、常にdefステートメントを使用して



ください。正解:



def f (x): return 2 * x
      
      





違う:



f = lambda x: 2 * x
      
      





ラムダ式の長さが40文字を超える場合は、コードの1行にロジックを入れすぎて、読み取れなくなっている可能性があります。あなたはそれをするべきではありません、それを別の関数に入れる方が良いです。


#2:Shutil



Shutilモジュールは、Pythonアーセナルで最も過小評価されているツールの1つです。これは標準ライブラリに含まれており、他の言語のモジュールと同じようにインポートできます。



import shutil
      
      





シャティルは何をしますか?実際、これはOSのファイルシステムに関するPythonプログラミング言語への高レベルのインターフェースです。これらの呼び出しは、多くの場合、osモジュールを使用して行われます。shutilを忘れないでください。スクリプトを使用してファイルをディレクトリからディレクトリに移動する必要があったと思いますが、これは面倒な作業でしたね。



Shutilは、これらの従来のファイルと割り当てテーブルの問題を高レベルのソリューションで解決します。これは、時間を節約し、ファイル操作を高速化するための鍵です。以下は、shutilが提供する高レベルの呼び出しの例です。



import shutil
shutil.copyfile('mydatabase.db', 'archive.db')
shutil.move('/src/High.py', '/packages/High')
      
      





#3:グロブ



Globはshutilほど素晴らしいものではないかもしれません。さらに、有用性の点ではラムダにさえ近くありませんでした。しかし、場合によってはかけがえのないものです。このモジュールは、ワイルドカードのディレクトリを検索するために使用されます。これは、PC上のファイルとその拡張子に関するデータを集約するために使用できることを意味します。モジュールは問題なくインポートされます。



import glob
      
      





このモジュールにもっと機能があるかどうかはわかりませんが、ファイルルックアップを実行するために必要なのはglob()です。検索ではUnix構文を使用します。それら。*、/など。



glob.glob('*.ipynb')
      
      





この文字列は、指定されたクエリに一致するすべてのファイル名を返します。この関数は、データの集約と、単にファイルの操作の両方に使用できます。



#4:argparse



このモジュールは、コマンドライン引数を解析するための堅牢で詳細な方法を提供します。多くの開発ツールはこの概念を使用しており、Unixコマンドラインを使用してこれらすべてを操作できます。良い例は、渡されたコマンドライン引数を処理するPythonGunicornです。モジュールの操作を開始するには、モジュールをインポートする必要があります。



import argparse
      
      





次に、それを操作できるようにするために、新しい型を作成します。これが引数パーサーになります。



parser = argparse.ArgumentParser(prog = 'top',
description = 'Show top lines from the file')
      
      





現在、パーサーに新しい引数を追加しています。この場合、各ファイルに出力する行数を決定するために渡すことができる引数を作成します。



parser.add_argument('-l', '--lines', type=int, default=10)
      
      





ここにいくつかのキーワード引数が追加されました。1つはその引数に渡されるデータ型を提供し、もう1つはこの引数なしでファイルが呼び出されたときのデフォルト値を提供します。これで、新しい引数パーサータイプでparse_args()関数を呼び出すことにより、引数を取得できます。



args = parser.parse_args()
      
      





これで、このPythonファイルを呼び出してコンパイルし、Bashから必要なオプションを簡単に提供できるようになりました。



python top.py --lines=5 examplefile.txt
      
      





言うまでもなく、これは間違いなく役に立ちます。Crontabで作業するとき、私はこのモジュールをよく使用しました。特定のUnixタイムスタンプでスクリプトを実行できます。さらに、このスクリプトは、ワーカーとしてユーザーの介入なしにBashコマンドを実行するスーパーバイザーにも使用できます。



#5:再インポート



もう1つの非常に過小評価されているモジュール。reモジュールは、正規表現を使用して文字列を解析するために使用され、Pythonで文字列を操作するためのより多くのオプションを提供します。str.split()のような文字列クラスにある関数に基づいてアルゴリズムの決定を行うことに何回遭遇しましたか?しかし、それを我慢するのはやめなさい!結局のところ、正規表現ははるかに単純で使いやすいです!



import re
      
      





reモジュールは、このリストの他のいくつかとは異なり、1つではなく、多くの非常に便利な機能を提供します。これらは、データサイエンティストにとって重要な、大量のデータの処理に特に関係があります。最初の2つの例は、sub()関数とfindall()関数です。



import re
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'
      
      





:



regex :



  • re.compile. re.compile ( ) regex.
  • re.compile regex.
  • re.VERBOSE. re.compile re.VERBOSE ( ) regex . .


:





pattern = '^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$'
re.search(pattern, 'MDLV')
      
      









pattern = '''
    ^                   # beginning of string
    M{0,3}              # thousands - 0 to 3 Ms
    (CM|CD|D?C{0,3})    # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 Cs),
                        #            or 500-800 (D, followed by 0 to 3 Cs)
    (XC|XL|L?X{0,3})    # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 Xs),
                        #        or 50-80 (L, followed by 0 to 3 Xs)
    (IX|IV|V?I{0,3})    # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 Is),
                        #        or 5-8 (V, followed by 0 to 3 Is)
    $                   # end of string
    '''
re.search(pattern, 'M', re.VERBOSE)
      
      





  • python raw string regex.
  • 複数ある場合は、すべてのキャプチャグループの名前付きキャプチャグループ(?P ...)。(キャプチャが1つしかない場合でも、使用することをお

    勧めします)regex101.comは、正規表現のデバッグとチェックに最適なサイトです。



#6:数学



これは歴史上最大のモジュールではありませんが、多くの場合便利です。数学モジュールを使用すると、sinやcosから対数まですべてにアクセスできます。これらはすべて、アルゴリズムを使用する場合に非常に重要です。



import math
      
      





モジュールは、依存関係なしで数学演算を利用できるようにすることで、確かに時間を節約できます。この例では、log()関数を示しますが、モジュールを深く掘り下げると、全世界が開かれます。



import math
math.log(1024, 2)
      
      





#7:統計



統計計算に非常に役立つもう1つのモジュール。基本的な統計へのアクセスを提供します-SCiPyの場合ほど深くはありませんが、データ分析には十分です。このモジュールのエイリアスはstであり、場合によってはstcまたはstsです。ただし、注意-scsではなく、これはScipy.statsのエイリアスです。



import statistics as st
      
      





このモジュールは、注目に値する多くの便利な機能を提供します。このパッケージの優れている点は、依存関係がないことです。いくつかの基本的な汎用統計操作を見てみましょう。



import statistics as st
st.mean(data)
st.median(data)
 
st.variance(data)
      
      





#8:urllib



このリストにある他のモジュールの多くがよく知られていない場合、urlibは例外です。インポートしましょう!



import urllib
      
      





より機能的であるため、代わりにフラスコを使用できます。ただし、ほとんどの基本機能については、標準ライブラリの機能で十分であるため、依存関係を気にする必要はありません。もちろん、追加の機能が必要な場合は、この場合、他のことに注意を払う価値があります。しかし、HTTPリクエストについて話している場合、urlibは必要なことを実行します。



from urllib.request import urlopen
 
data = null
with urlopen('http://example_url/') as response: data = response
      
      





urlibモジュールは、私がもっと学ぶことを強くお勧めするものです。



#9:日時



科学計算で非常に一般的なツールのもう1つの優れた例は、日付と時刻のタイプです。多くの場合、データにはタイムスタンプが付いています。モデルのトレーニングに使用される予測関数である場合もあります。このモジュールは、多くの場合、dtエイリアスとともに使用されます。



import datetime as dt
      
      





これで、日付と時刻のタイプを作成し、年、月、日などのプロパティを使用して、一般的な日付と時刻の構文を操作できます。これは、データ内の日付の特定のセクションを再フォーマット、分析、および操作する場合に非常に役立ちます。このパッケージの主な機能のいくつかを見てみましょう。



import datetime as dt
now = dt.date.today()
print(now.year)
print(now.month)
      
      





#10:zlib



このリストの最後の寄稿者はzlibモジュールです。これは、Pythonプログラミング言語を使用した多用途のデータ圧縮ソリューションです。このモジュールは、パッケージを操作するときに非常に役立ちます。



import zlib
      
      





ここで最も重要な関数は、compress()とdecompress()です。



h = " Hello, it is me, you're friend Emmett!"print(len(h))
t = zlib.compress(h)
print(len(t))
z = decompress(t)
print(len(z))
      
      





結論として、Pythonでのプログラミングは、依存関係が多数あるために難しいように思われることがあります。また、標準言語ライブラリを使用すると、この問題を部分的に取り除くことができます。さらに、標準のPythonツールを使用すると、時間を節約し、コードの量を減らして、読みやすくすることができます。



All Articles