Python/整理中

Pythonは複素数を扱う組込みのcomplex型をサポートしています。整数はint型、浮動小数点数はfloat型です。 虚数単位は数学では一般的に i {\displaystyle i} を用いますが、Pythonでは j を用います。 これは電気工学・電子工学の慣習で電流(intensity of electricity)の i(または I)との混同を避けるためです。 また変数 j と区別するため 1j のように必ず係数を付けます。 複素数も実数も有限精度での近似にすぎないため誤差は生じます。
または
または
**は冪乗演算子です。importはモジュールをインポートします。 importはモジュールをインポートします。from modname import object0, object1, ..., objectN でモジュールmodnameからオブジェクトobject0, object1, ..., objectNを現在の名前空間にインポートすることができます。基本的な数学関数および定数はmathモジュール、複素変数を扱える関数および定数はcmathモジュールで定義されています。このほかにもさまざまなモジュールが存在し、モジュールを作成することもできます。Pythonでは組込みのset型およびfrozenset型で集合を扱うこともできます。
Pythonの 正規表現(regular expression)は組込みではなくモジュールreをインポートし使用します。
正規表現とは、検索のような機能です。詳しくは上記リンク『正規表現』のリンク先を読んでください。
pythonで文字列中の検索をしたい場合、search という関数を re.search() という形式で使います。
なお、Perl など他の言語では、似たような演算を match という場合もありますが、しかし python では、matchという関数が別の意味で使われているので(後述)、混同しないように気をつけてください。

Pythonでは、正規表現を使うには、まずreをインポートする必要があります。
文字列中の文字を検索するには re.serach 関数を使って
のように記述します。
検索する文字列を「oo」から、たとえば「goo」に返ると、とうぜん「book」には「goo」という文字の並びは無いので、検索しなくなります。


下記のように、 re.search 関数中でひとまとめに検索しても可能です。


正規表現の関数 re.match は、対象の文字が、文字列の先頭にないと検索にヒットしません。
下記の2種類のコードとその結果を見比べてください。
「book」の文字列中に「oo」があるにもかかわらず、先頭は「oo」からは始まらないので、 re.match の場合には「oo」ではヒットせず、「boo」にしないとヒットしないのです。

Pythonに限らず、PerlやC#などでもsplit関数というのがあり、1個の文字列を、区切り文字でくぎってリスト(配列)に代入し、リストのいくつもの個数の要素に代入していく機能が、モダンなプログラム言語にはあります。
このうち Python の split関数は、正規表現のreモジュールで扱われますので、python では関数 re.split を使うことになります。(他のプログラム言語では、正規表現とは無関係なのが一般的。)
対話モードでも、正規表現は使えます。
r''やr""のようなraw文字列はエスケープ文字を解釈しないので、\dや\sなどのメタ文字を書くのに重宝します。matchメソッドは第一引数に正規表現パターン、第二引数にマッチ対象文字列、第三引数にre.Iやre.IGNORECASEやre.Mやre.MULTILINEやre.Sやre.DOTALLなどのフラグを指定します。Pythonに正規表現リテラルというものは存在しません。
matchメソッドはマッチオブジェクトを返します。マッチオブジェクトのgroupメソッドを使用して一致部分を抽出します。group(0)はマッチ全体、group(1), group(2), ..., group(N)は後方参照です。matchメソッドで対象文字列にマッチしなかった場合はマッチオブジェクトではなくNoneを返します。マッチに失敗する可能性がある場合は必ずif m == None:あるいはif not m:(NoneはFalse)で確認してください。
Python 2ではurllibまたはurllib2、Python 3以降はurllib.requestのurlopenメソッドを使用してHTTPクライアントを作成することができます。
レスポンスはbytesで返ってくるので、decodeメソッドを使用してstrに変換しています。
JSONを扱うにはimport jsonします。
このコードから、オブジェクトのコピー(特にディープコピー)にJSONを利用できることに気がつくと思いますが、その用途にはモジュール copy の copy() や deepcopy() を使います。
PythonにはC/C++やJavaにあるインクリメント演算子とデクリメント演算子はないので、加算・減算と再代入で実現します。
Pythonにインクリメント演算子とデクリメント演算子はありませんが、累算代入文( augmented assignment statement )の加算代入文・減算代入文はあります。
passは「文法上必ず処理を書かなくてはならないが何も処理を書きたくない」というときに使います。
無名関数を定義するにはlambda文を使用します。
ヒアドキュメントは複数に渡る文字列リテラルで、文字列を""" """あるいは''' '''で囲みます。
モジュール・クラス・関数の冒頭の文字列リテラルは docstring と呼ばれドキュメントを記すために使われ、 オブジェクト.__doc__ で参照できます。 また、doctestではドキュメントの中の用例を使ってテストを行うときに使われます。

Pythonではジェネレーターを簡単に書くことができます。ジェネレーターを用いると、最初のフィボナッチ数を求めるプログラムは次のように書くことができます。
Pythonには、シーケンスの内包表記とジェネレータ式があります。
if文やwhile文の条件には式が要求されるので代入文 = は使えませんでした。 しかし、条件式の中で代入を行うのがふさわしいケースもあります。 このため Python 3.8で、条件式中でもつかえる代入演算子(Assignment Expressions) := (俗称:セイウチ演算子;Walrus operator)が導入されました。
代入演算子を使った条件式を含む文のブロックの外に出ても、そのまま代入した効果は残ります。
なお、f"あなたは{n} 文字を入力しました"はテンプレート・リテラルです。
たとえばprint()関数で、「こんにちは」と表示させたい場合なら
と書きました。 では、" を含んだ文字列を表示するにはどうしたら良いでしょう? やり方は、いくつかあります。
2. から 4. の様に、 \ を前置して文字列中に所望に文字を書く方法をエスケープシーケンス( escape sequence )といい、エスケープシーケンスに前置する文字 ' をエスケープ文字( escape character )といいます。
#から行末まではコメントです。文字列の出力はprint()を使います。Python 2まではprintは文でしたが、Python 3では組込み関数printとなったため、かっこが必須となります。
文字列は" "で囲んでも' 'で囲んでも同じ意味であり、エスケープ文字の取り扱いに違いはありません。
Pythonのブロックはスペース4つのインデントによって表されます(オフサイドルールといいます)。
pythonは、Googleなどの企業のみならず、MITの初年度のプログラミングの授業でも採用されています。英語圏ではRubyやPerlよりも普及しています。
Pythonは1990年にグイド・ヴァンロッサムによって作られました。誰が書いても同じソースコードになるように(違う目的のコードは違う見た目になるように)設計されており、常に読みやすいプログラムを書くことができます。教育用プログラミング言語としても秀逸です。
Pythonには、いくつかの異なる文字列の書式化の方法があります。
C言語のsprintf()に相当する書式付き文字列化は、Pythonでは文字列の % 演算子を使います。 また、書式化文字列に % によるフィールドが複数ある場合は、下のようにタプルを使います。
文字列の format メソッドを使う方法。
PEP 498で新しく f文字列 が追加されました。
pipはPythonのパッケージインストーラーです。Python Package Index などのインデックスからパッケージをインストールするのに使用します。
pipがインストールされているかは、(インターラクティブ・モードではなく)コマンドラインから確認します。
YAMLは、構造化データやオブジェクトを文字列にシリアライズするためのデータ形式の一種です。 Pythonは、初期状態ではYAMLを利用できませんが、pyYaml をインストールすることで、pythonでYAMLを処理できるようになります。
pipがインストール済みならば、
で pyYaml をインストールできます。 YAMLとPythonは別個の出自なのですが、YAMLはデータ構造をインデントで表し、Pythonはプログラム構造をインデントをあらわすので似通った外観になります。
かつてYAMLの読取りには、yaml.load()が使われていましたが、セキュリティ上の懸念から deprecated となり、yaml.load() を使うと
と警告されます。yaml.safe_load() を使いましょう。
pickleモジュールは、Pythonのオブジェクト構造をシリアル化およびデシリアル化するためのバイナリプロトコルを実装しています。 marshalモジュールも、Pythonのオブジェクト構造をシリアル化およびデシリアル化するためのバイナリプロトコルの実装ですが、将来に渡ってフォーマットを変えないことは保証されていないので、その用途にはpickleモジュールあるいはshelveモジュールを使ってください。 marshalモジュールは、主に.pycファイルのPythonモジュールの "擬似コンパイル "コードの読み書きをサポートするために存在します。
shelveモジュールは、永続的な辞書の実装です。