もた日記

くだらないことを真面目にやる

Pythonメモ : あまり知られていない(かもしれない)テクニック集 その3

  • lightweightswitch.py : 辞書をswitch文として使う
  • namedformatting.py : 辞書を使った文字列フォーマット
  • boolisslow.py : ブール値でのループは遅い(Python 2のみ)
  • calculator.py : operatorモジュールを使用した計算例
  • setoperators.py : setのoperatorとメソッドを使った集合演算
  • codetofunction.py : コードで書いた計算式を関数にする
  • nested_functions.py : ネストされた関数
  • objgetnamedattribute.py : オブジェクトの属性値を取得
  • unique_by_attr.py : 同じ属性値のオブジェクトの重複削除
  • common_seq_method.py : シーケンス型で共通のメソッドを実行
  • contextmanagers.py : コンテキストマネージャ
  • cacheproperty.py : デコレータを使用した値のキャッシュ
  • deck_as_list.py : 特殊メソッドとnamedtupleを使用したトランプの例
  • socketmsghandling.py : ソケットプログラミング

github.com

上記リポジトリにあまり知られていない(かもしれない)Pythonのテクニックが49個まとめられていたので残りを見ていく(その1、その2は下記リンク)。

wonderwall.hatenablog.com

wonderwall.hatenablog.com


lightweightswitch.py : 辞書をswitch文として使う

Pythonにはswitch文がないので辞書をswitch文の代わりとして使う方法。

コード

#! /usr/bin/env python3
"""lightweight switch statement"""
a = {
    True: 1,
    False: -1,
    None: 0
}
print(a.get(False, 0))

"""works with functions as well"""
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

b = {
    '+': add,
    '-': subtract
}

print(b['+'](1, 1))

実行結果

-1
2
続きを読む

Pythonメモ : あまり知られていない(かもしれない)テクニック集 その2

  • listtocommaseparated.py : リストをカンマ区切りで出力
  • minmaxindex.py : リスト内の最小値、最大値のインデックスを取得
  • removeduplicatefromlist.py : リストから重複要素を削除
  • reverselist.py : リストを逆順にする
  • reversestring.py : 文字列を逆順にする
  • flattenlist.py : ネストされたリストの平坦化(flatten)
  • sortlistkeepindices.py : ソート前のインデックスを保持
  • transpose.py : 転置
  • copylist.py : リストの浅いコピー、深いコピー
  • merge_dict.py : 辞書をマージ
  • dictionaryget.py : 辞書にキーが存在しない場合にgetメソッドを使用
  • dictdefaultvalue.py : 辞書のデフォルト値
  • dictsortbyvalue.py : 辞書を値でソート
  • dictswapkeysvalues.py : 辞書のキーと値を交換
  • loopoverlappingdicts.py : 2つの辞書で共通のキーを取得
  • keydefaultdict.py : defaultdictと関数の組み合わせ
  • metatable.py : メタテーブル
  • tree.py : defaultdictを使用した木構造

github.com

上記リポジトリにあまり知られていない(かもしれない)Pythonのテクニックが49個まとめられていたのでリストや辞書関連を見ていく(その1、その3は下記リンク)。

wonderwall.hatenablog.com

wonderwall.hatenablog.com


listtocommaseparated.py : リストをカンマ区切りで出力

joinを使ってリストの要素をカンマ区切りで出力する方法。数値を含む場合はstrで変換する。

コード

#! /usr/bin/env python3
"""converts list to comma separated string"""

items = ['foo', 'bar', 'xyz']

print (','.join(items))

"""list of numbers to comma separated"""
numbers = [2, 3, 5, 10]

print (','.join(map(str, numbers)))

"""list of mix  data"""
data = [2, 'hello', 3, 3.4]

print (','.join(map(str, data)))

実行結果

foo,bar,xyz
2,3,5,10
2,hello,3,3.4
続きを読む

Pythonメモ : あまり知られていない(かもしれない)テクニック集 その1

  • valueswapping.py : 変数の値を交換
  • controlwhitespaces.py : 空白の操作
  • concatenatestrings.py : 長い文字列を複数行に分けて書く
  • forelse.py : forループのelse文
  • whileelse.py : whileループのelse文
  • tryelse.py : tryのelse文
  • boolasint.py : ブール型を数値として扱う
  • rawinputintegers.py : 文字列内の複数の数値を変換
  • chainedcomparison.py : 比較の連鎖
  • conditionalassignment.py : 条件による代入
  • conditionalfunctioncall.py : 条件による関数呼び出し
  • stepslice.py : リストの要素を何個置きに取得
  • maxsplit.py : splitの分割回数
  • exec.py : execの引数に辞書
  • argumentunpacking.py : 引数リストのアンパック
  • extendediterableunpacking.py : Extended Iterable Unpacking
  • setglobalvariables.py : グローバル変数の更新

github.com

上記リポジトリにあまり知られていない(かもしれない)Pythonのテクニックが49個まとめられていたので簡単なものから見ていく(その2、その3は下記リンク)。

wonderwall.hatenablog.com

wonderwall.hatenablog.com


valueswapping.py : 変数の値を交換

変数の値を入れ替える。一時的な変数は不要。

コード

#! /usr/bin/env python3
"""pythonic way of value swapping"""
a, b = 5, 10
print(a, b)
a, b = b, a
print(a, b)

実行結果

5 10
10 5
続きを読む

Linuxメモ : topの代わりとして使えそうなコマンド(glances, ctop, gtop, htop, vtop, cpustat)を試してみる

  • glances
    • インストール
    • 使い方
  • ctop
    • インストール
    • 使い方
  • gtop
    • インストール
    • 使い方
  • htop
    • インストール
    • 使い方
  • vtop
    • インストール
    • 使い方
  • cpustat
    • インストール
    • 使い方

GitHubを眺めていたらtopの代わりとして使えそうなコマンドが色々あったので試してみる。

glances


Glances - An Eye on your system(公式ページ)

github.com

glancesは色々な情報を表示できるモニタリングツール。

インストール

pipでインストールできるので下記コマンドを実行。

$ pip install glances
続きを読む

Pythonメモ : pygorithmで探索、ソートのアルゴリズムを学ぶ

  • pygorithm
  • インストール
  • 使い方
  • その他のアルゴリズムまとめリポジトリ

pygorithm


github.com

pygorithmという探索、ソートなどのアルゴリズムを学ぶためのモジュールがあったので試してみる。

f:id:wonder-wall:20170815230511p:plain

インストール


pipでインストールできるので下記コマンドを実行。

$ pip install pygorithm

が、少し試したところ最新バージョンではなかったのでGitHubのリポジトリをインストールした。

$ pip install git+https://github.com/OmkarPathak/pygorithm
続きを読む