python

ヒストリをとるための

仕事でunixをよく使うので、使ったコマンドをファイルに落とすためのスクリプトを書いた。久々にpython 2.Xで。aliasに alias his = "history|tail -2 |head -1|tee -a" his hisとかで一つ前の入力hisに追加していってもいいんだけど、つい勢いでlsとかpwdと…

結局ねー、の結局

スクリプト書いて詰まってて、クラスが云々、オブジェクト指向が云々言うてたけど、 結局全然関係ないところのスクリプトがおかしかった。 プログラミングなんて、結局こういうところでポカしてるんだよな!という再認識。

結局ねー

今年はPerlと息巻いていたけど、結局Pythonに戻ってくるっていう... でも以前使ってたPython 3.XじゃなくてPython 2.6.Xなので戻ったと言っていいのやら...で、色々とスクリプトを書きすすめていって、まー自学でやってるので色々とエラーにぶち当たって、そ…

セミコロンを忘れる

最近はプログラムを書くというとほとんどPythonでやっていたので,久々にC++とか触ると,とにかく;を忘れる. そしてとにかく,;がねーよ!というエラーを吐かれる. こういうのも”ゆとり”と言うのかなー……

自作関数とかのモジュール化

こちらさまを参考にして,Pythonの自作関数をモジュール化してみた. 呼び出される側のファイルも呼び出す側のファイルも同じ階層にある場合について書いてみる. #呼び出される側のファイル(ファイル名:testin) def hoge(): print("hoge") #呼び出す側のファ…

os.getcwd()

自分はシェルスクリプトを作るためのPythonスクリプトを作るシェルスクリプトを書きます. で,pythonファイル中では実験のたびに出力先を手動で変更していたのですが, import os outputdir=os.getcwd() というのでもういじらなくてもいいじゃーんと. 前書き出…

引数にリストをもつ関数にクラスのリストのメンバを与える

タイトルって難しい. mathモジュールのsum()は数値のリストを与えるとそのリストの総和を返してくれるけど,クラスメンバを与えることはできないか,って話です. また意味がわからんな…… import math class Hoge: def __init__(self, number): self.number=num…

パイプでpythonに何か渡す

$ echo hoge | python script.py とかするとき,pythonにどうやってechoしてるhogeを渡すか. import sys input=sys.stdin.readline() print(input) とすると,hogeが出力される.自分はechoの部分にログファイルの最終行をgrepするコマンドにして,grepされた行…

辞書

リストから辞書にする方法. for i in range(0, len(list), 1): dict={list[i]:i} だと,for文で最後に作られたdictしか辞書にならないので,listの要素すべてを辞書にしたいならば, dict={} for i in range(0, len(list), 1): tmpdict={list[i]:i} dict.update…

よく使うのは

昔書いたプログラムを元にしているとはいえ,300行程度の新しいプログラムを4時間くらいで書けた. Pythonに乗り換えて良かったかもしれん. インデントでブロック分けをする仕様のおかげでそこそこキレイにはなるし. 後はプログラムの中身がきちんとしてればい…

むしろ辞書でよくね?

昨日の続き. 2次元リストでいいじゃん,って思ったけど,クラスに2つメンバ持たせるだけなら辞書の方が便利なんじゃね?っていう. いろいろと見直しながらプログラミングを進めていこう…… しかし,プログラムの修正ばかりしていて肝心の提案手法の修正がまだで…

2次元リストでいいじゃん

さっきいろいろ頑張ってみたけど,メンバ2つなら2次元リストでいいんじゃね?と思ってきた. あの1ラインの書き方は何か利用価値あるのか……? うーん…… ただ単に [hoge for i in range(fuga)]って書き方がしたかっただけなんだけども……

1つのクラスによるリストのあるメンバの総和をPythonで1ラインで書く

タイトルが意味不明だ……何て書けばいいんだろう. 例として,整数乱数fuga,yeahをメンバとしてもつクラスHogeを宣言して,Hogeのリストを作り,各Hogeオブジェクトのfugaメンバの総和をとるのを考える. mathモジュールのsum()を使うけど,sum()はリストの総和を返…

Pythonポケットリファレンス

Python ポケットリファレンス (Pocket Reference)作者: 柏野雄太出版社/メーカー: 技術評論社発売日: 2009/03/28メディア: 単行本(ソフトカバー)購入: 2人 クリック: 97回この商品を含むブログ (29件) を見るずっと本屋で眺めてたので購入を決意。

メタヒューリスティクスの数理

メタヒューリスティクスの数理作者: 久保幹雄,J. P.ペドロソ出版社/メーカー: 共立出版発売日: 2009/05/10メディア: 単行本購入: 4人 クリック: 62回この商品を含むブログ (11件) を見るヒューリスティックスの例をPythonのコードで示してくれてる本。 Pytho…

append()とextend()

extend()というのの存在を初めて知ったのでメモ。 append()は >>>a=[] >>>a.appned(1) >>>a.append(2) >>>b=[] >>>b.append(3) >>>b.append(4) >>>c=[] >>>c.append(a) >>>c.append(b) >>>print(c) [[1,2],[3,4] と2次元リストになるのに対して >>>a=[] >>>a…

return x, y

Pythonって複数の変数をreturnすることができるんですね…

二次元配列(リスト)への代入が(解決)

できた. 問題は配列(リスト)の初期化の部分. >>> list=3*[3*[0]] は,python的には temp=3*[0] list=3*temp となるらしく,ある要素のみに代入したつもりでも,他の行の要素まで代入してしまうみたい. 初期化を次のようにすればOK. >>> list=[[0 for i i…

二次元配列(リスト)への代入が

できない. >>> list=3*[3*[0]] >>> list [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> list[1][1]=1 >>> list [[0, 1, 0], [0, 1, 0], [0, 1, 0]] ……なんでだ! [[0, 0, 0], [0, 1, 0], [0, 0, 0]]になってほしいのに!! 解決策も込みでブログ更新しようと思っ…

リスト(配列)の初期化

リストの宣言は, list=[] として行う. 任意の数のリストからなる配列を0で初期化する場合は以下のようになる. n=3 list=n*[0] 2次元配列の場合は,以下のようになる. n=3 m=5 list=n*[m*[0]] 3次元配列の場合は,以下のように…… n=3 m=5 l=4 list=n*[m*[…

encoding='UTF-8'

open()を使ってファイルを開こうとしたら,解読の難解なエラーが出た. 調べたところ,ファイルを開くときのエンコーディングが原因らしい. open()を次のようにすることで,とりあえず解決はできた. open(readfile, 'r', encoding='UTF-8') なんで突然こん…

ファイルから読み込んでリストへ入れてく

readfileの中身が以下のようなテキストであるとする. hoge fuga yeahこれを読み込んで,各行の文字列をリストに代入していくスクリプト.読み込むときは以下のように行うとする. $ python hoge.py -init readfile Pythonのスクリプトは次のようになる. li…

コマンドラインでyを振る

某動画サイトでコマンドラインでネギを振らせてみた,というのに感化されてPythonでやってみた. 動画とかで公開できないのでソースで. Cで10行ならPythonでは6行. import time while 1: print("\r('.')y", end="") time.sleep(1) print("\r('.')_", end="…

もし(AかつB)ならば

Cの時に覚えた"&&"を使いたくなってしまうのでメモ. if文の中に"かつ"を入れる. x=0 y=0 if(x==0 and y==0): print("AND Banzai!!") else: print("Boooo") もちろん結果は AND Banzai!!andをorに変えれば"または"になる,と.

実行時間計測

Pythonスクリプトの実行時間を計測して標準エラーとしてターミナルへ出力する. import sys import time StartTime=time.time() """ プログラム """ EndTime=time.time() print("Running Time =", EndTime-StartTime, "[sec]", sep=" ", file=sys.stderr) 実…

ライブラリ

読み返してみたらPythonの標準ライブラリはsys,math,random,timeを使ってた. ようやっと4つか…… それぞれのライブラリの中身をすべて把握したわけではないけども.

コマンドライン引数から乱数の範囲を読み込み,範囲内の乱数を出力

過去2つの内容の複合. $ python hoge.py -random 2 10として,2〜10の間の整数を出力する. import sys import random argc = len(argv) for i in range(1, argc, 1): if(sys.argv[i] == "-random"): if(int(sys.argv[i+1]) < int(sys.argv[i+2]) ): N=rand…

コマンドライン引数

$ python hoge.py -option yeah -option2 fugaとして,コマンドラインから-optionとか-option2で指定された引数を取り込む一方法. import sys argc = len(argv) for i in range(1, argc, 1): if(sys.argv[i] == "-option"): print(sys.argv[i+1]) i+=2 elif…

random.randint()

ランダムに整数を作る. ランダムに"i import random N=random.randint(i,j) とする,と. もちろんi,jはどっかで指定しておく.

クラスを使ってみたかっただけ

自分はPythonをテキスト生成に使っていて,次のように使うことが多い. for i in range(0, 2, 1): for j in range(2, 4, 1): for k in range(4, 6, 1): print("hoge", str(i), str(j), str(k), sep="_") とにかくprint文が面倒くさい.その中のstr()が面倒く…