Python

Python の range ってなに?

整数の集まりを表すオブジェクト 例えば range(3) なら 0, 1, 2 の集まりを表しています。 for i in range(3): print(i) 上のコードを絵にするなら、こんな感じです。 もちろんそう言った側面もありますが、for 文で取り扱うときは、数字の集まりだと考えて…

Python のメタクラスとクラスデコレータってなに?

クラス定義時に共通して実行したい処理がある時に使います。

Python の len はなんでメソッドではなく関数なの?

メソッドよりも関数が読みやすいから。

Python のクラスって何?

クラスはオブジェクトに共通する値や処理を定義しています。

Pythono の list の比較演算子

Python では list に比較演算子が定義されていて、 2 つのリストを比較することができます。

Python の list.remove メソッド

== が True となる要素を1つ削除します。 要素がなければ ValueError を投げます。 list.remove(x) リスト中で、値 x を持つ最初の要素を削除します。 該当する項目がなければエラーとなります。 # 1) list の remove メソッドは is か == が True となる #…

Python の type 関数について思ったこと

型判定の関数名は、次の2つの理由から checktype(object) とかにしてほしかったな..(setattr 関数みたいな感じで)。

Python のクラス変数とインスタンス変数ってなに?

インスタンス変数は、インスタンスオブジェクトの属性です。クラス変数は、クラスオブジェクトの属性です。

Python の関数とメソッドの違いって何?

メソッドは呼び出されると、自分を呼び出してきたインスタンスオブジェクトを関数の第一引数に代入して、関数を実行します。

Python を高速化したい

複数の書き方の処理速度の比較をしています。構文、組込モジュール、組込型、組込関数を取り扱っています。外部ライブラリ、別言語への書き換えは扱いません。

Python の is と == の動作と違い

is は、オブジェクトが同じであるかどうかを判定する比較演算子です。== は、オブジェクトの値が等しいかどうかを判定する比較演算子です。(正確には値が同じであるかどうかを確認するように実装されて、 あるいはしなければならず、その実装はクラスごとに…

Python 1 行が 79 文字以内である理由と 1 行を最大 79 文字以内に抑える方法

1 行が 79 文字以内である理由 エディタに勝手に改行させないため。 コードレビューする際に、エディタで勝手に改行されると読みづらくなるので。 この 1 行の文字数の制限は、1 行が 80 文字のエディタが折り返して表示する機能を避けるために選定されたも…

Python でリストを比較する。

1.リストを比較する 2.リストの中身を比較する 3. 重複するリストの中身を比較する。

Python でインターフェイスを持たせたい。

Python は、動的言語なので Java で言うところのインターフェイスに相当するものはありません。ただ、共通のメソッドを持たせたい場合は2つほど方法があります。 例えば、こんなシチュエーションだとして... class A: pass class B: pass # こいつを追加し…

Python で割り算をするときの切り上げと切り捨て

Python で割り算をするときの繰り上げと切り捨て 3つのやり方がある。 1. 演算子のみを使う。 これがオススメ。欠点は、切り上げが伝わり辛い。利点は、表記が簡潔で実行速度が 10 倍速く、何も import しなくていい。 # 切り捨て 4 // 3 # 切り上げ -(-4 /…

Python で素数のリストを得る方法 エラトステネスの篩

3 つの書き方を比較検討しました。 項番 項目 時間 1 簡単なもの 0.9157630139998219 2 高速化 0.16211261399985233 3 集合 0.5873824189993684 計測に使用したコード sieve_of_eratosthenes.py 1. 簡単なもの def primes(n): is_prime = [True] * (n + 1) i…

How to get prime list by Python

Sieve of Eratosthenes def primes(n): is_prime = [True] * (n + 1) is_prime[0] = False is_prime[1] = False for i in range(2, n + 1): for j in range(i * 2, n + 1, i): # Exclude j from candidate of prime. # j = i * k is_prime[j] = False return…

builder も作った..。

import collections def main(): # @immutable('x1', 'y1', 'x2', 'y2', 'is_line', 'is_dot') # class Region(object): region1 = Region(0, 0, 1, 1) print(region1) # def __init__ の代替もできてる。 # self.is_rectangle = value とはできない。self …

isimmutable function in Python

import string import random def usage(): # int print(isimmutable(1)) # True # str print(isimmutable('Hello, world!')) # True # user defined class class C: pass print(isimmutable(C())) # False # dict print(isimmutable({'a': 1})) # False # s…

Python の __new__ と __init__ の違い

3つの違いがあります。 __new__ __init__ 1 インスタンスオブジェクトが 生成される前に呼ばれます。 インスタンスオブジェクトが 生成された後に呼ばれます。 2 オブジェクト self を インスタンス化します。 オブジェクト self を 初期化します。 3 第一…

Python のクラスオブジェクトとインスタンスオブジェクトってなに?

インスタンスオブジェクトは、変数に代入できるものを指しています。

How to send an email from Gmail by Python.

usage $ python3 sample.py sample.py """Send an email from Gmail. Before execute this code, turn on the flag "Allow less secure apps" from the follwoing link. https://myaccount.google.com/lesssecureapps """ import smtplib import email.mime.…

Mac で Neovim を Python の開発環境にする。

目標 作業が完了すると Neovim は、次の 3 つの動作をするようになります。 1. 構文チェック Syntastic, pyflakes 2. 補完 jedi-vim(ドット . を押下した時に補完) 3. 補完 deoplete-nvim(変数名を補完) 表. インストールするもの一覧 項番 名前 説明 1 Home…

Python で実行時間を計測したい。

①Linuxのtimeコマンド, ②time, ③cProfile, ④timeit

Python でリストを条件をつけて複数の要素を削除したい。

リスト内包表記が、一番オススメです。

Python の関数、メソッドの命名について

get を使わない。 原則、副作用の無く新たにオブジェクトを生成しない関数, メソッドは原則「名詞」を使うのが望まい。 # x noun = obj.get_noun() # o noun = obj.noun() 感動した記事 Getter/Setterは悪だ。以上 もし get がダメなら、give ならどうだろう…

Initializing two dimensional dictionary in Python

◯ usage >>> table = dict2d(['a', 'b', 'c']) >>> table['a']['b'] = 100 >>> table['a']['b'] 100 ◯ definition def dict2d(key_list, default=None): return dict1d(key_list, dict1d(key_list, default)) def dict1d(key_list, default=None): n = len(k…

Python で class のみ reload

Python で class のみ reload させる方法

学習ノート - 強化学習

ゼロからDeepまで学ぶ強化学習 - Qiita これを精読する。 DQNの生い立ち + Deep Q-NetworkをChainerで書いた - Qiita http://www.fun.ac.jp/~osawa/course/AI2/learning/QLearning.html まだ1行も読めてない。 JavaでQ学習を実装 迷路の最適ルートを学習・…

isiterable Python3

usage >>> isiterable(MyIterableContainer('Yaruo', 'Yaranaio', 'Yarumi'), 3) True >>> >>> isiterable(MyIterableContainer('Yaruo', 'Yaranaio', 'Yarumi'), 2) False >>> >>> >>> isiterable([1, 2, 3], 3) True >>> >>> isiterable([1, 2, 3], 2) Fal…