強弱と高低

Python3をメインに

2015-01-01から1年間の記事一覧

CheckiO The end of other

自分の解答 def checkio(words_set): counter=0 for i in sorted(words_set): for j in sorted(words_set): if i.endswith(j) and i!=j: counter+=1 else: pass if counter>=1: return True else: return False プロの解答 def checkio(words): """ You can …

組み込み関数 any

any(iterable)は iterable のいずれかの要素が真ならば True を返します。iterable が空なら False を返します。 (http://docs.python.jp/3/library/functions.html?highlight=any#any) なるほど、orで繋ぐのが要らなくなるのか。

reduceというメソッド

functools.reduce(function, iterable[, initializer]) これが優秀なのではないかと思う。 説明文を引用すると 2 引数の function を iterable の要素に対して左から右に累積的に適用し、イテラブルを単一の値に縮約します。左引数 x は累計の値で、右引数 y…

CheckiO Elementary Secret Message

自分の解答 def find_message(text): st="" for w in text: if w.isupper()==True: st=st+w return st forとifが連結できるだろうなと思いながら失敗したので普通の解答。 プロの解答 def find_message(text): return ''.join(c for c in text if c.isupper(…

CheckiO Elementary Monkey Typing

自分の解答 def count_words(text, words): count=0 for word in words: if (word in text.lower()) == True: count+=1 else: pass return count ちゃんとカウントという変数を用意している。Cでも読んでいる気分が否めない。。。 プロの解答 def count_word…

リストの要素の総和を求める

sum(lists) これだけだったw

Python3 普通のリストとnumpyのリストの要素追加操作の違いメモ

普通のリスト a=[1,2,3] a.append(4) ==> a=[1,2,3,4] numpyのリスト import numpy a=numpy.array([1,2,3]) numpy.append(a,4) ==> a=[1,2,3,4] 結構間違える。。。

renameはperlの構文を使おう

renameを使おうと、Web検索する。 rename .txt .csv *.txt でいけるよという記述。 しかし、 syntax error at (eval 1) line 1, near "." ドットが使えない(T_T) perlの構文が使えるとのことで、素直に利用 rename 's/txt/csv/' *.txt 無事にできました。 re…

txtファイルを1行ずつ読み込み、正規表現で抜き出す

目的 txtファイルを読み込んで、1行ずつ抜き出す 抜き出した行から正規表現で欲しい文字列を抜き出す 文字列をリストに追加する 実装 import glob import re files = glob.glob("./*.txt") lists=[] for file in files: for line in open(file,"r"): char=re…

Python3でシステムコマンドを円滑に実行する

subprocessモジュールは正直使いにくい subprocessは配列でコマンドと引数をとる。普通のコマンドのように入力できないのが難点。 コマンド文字列を配列にすればいい import subprocess in="./in" out="./out" cmd="pdftk %s/*.pdf cat output %s/output.pdf…

あるディレクトリ内の特定の拡張子のファイル名を取得する

使うモジュール import glob import os メソッド glob.glob(pathname) pathnameに当てはまるパスを返す os.path.basename(path) pathの中のファイル名を取得する 方法 files = glob.glob('./a/*.txt') for file in files filenames = os.path.basename(file)…

リストの要素をつなげて表示させる方法

目的 リストa=[1,2,3,4]の要素を['1','2','3','4']と表示させず、1234と表示させる。 方法 2種類 for文を使う for i in a: print(i,end='') print()のオプションで終端をどう表示させるかを指定する。end=''を使うと、出力した後ろに''を表示させている。 j…

入力された文字を逆順で表示する

[::-1]を使う print(input()[::-1]) input().split().sort(reverse=True)と同じ効能。 ソートを行わない違いがある。

Python3 unsubscriptable objectの対処

現象 mapで要素の操作をしようとしたときにunsubscriptable objectというエラーが出てくる。 原因 Python3では、mapを使うと、mapオブジェクトで返されるため。 このエラーは、mapでa[i]のように、iを用いた参照ができないと言っている。 対策 対処は1つで、…

Tex ハイパーリンクを入れる

ハイパーリンクを入れたい。 hyperrefパッケージが必要 \usepackage[dvipdfmx]{hyperref} \begin{document} \href{http://www.yahoo.co.jp/}{やほー}へジャンプ。 \end{document}

Tex 表内で改行を自動で行う

普通にTexで表を使うとまともに表内で改行してもらえないです。紙の外に永遠に書き続けることに。 そこで、勝手に改行してもらいたいときは、 p{a cm}を使ってaを指定すればいいとのこと。 \begin{tabular}{|c|p{10cm}|p{10cm}|} このように使う。となるとセ…

重複がないようにリストを作る

set(object)が有効 リストを重複なく再リスト化するときは list(set(object)) 参考 重複のない集合set » Python Snippets

競プロ向けインプットメモ

数字をホワイトスペース区切りでインプット a = input().split(" ") a = map(int,input().split(" "))

Python3でシステムコマンドを実行する

subprocessモジュールを利用する commands モジュールは撤廃されている 利用が推奨されているのは以下の2つ。命令の仕方がやや使いにくい感じがする。 subprocess.call(args) 成功か失敗かを0/1で返す In []: subprocess.call(["echo","hello world"]) hello…

大きさの違う2つのオブジェクトを含むループ

len(A)=100,len(B)=150のオブジェクトを各要素計算したい 要素数の小さい方(ここではA)に合わせないとまずい。 n = min(len(A),len(B)) for i,j in range(n): もあり。 しかし、zipを使うと更に良い(らしい) for i,j in zip(A,B): [処理] こうすると、自…

リスト構造ではそのまま数式計算ができない

リスト構造は中身がstr型になっているので、各要素に対して計算はできない。 そこで、 np.asarray(object)とする。 これにより、オブジェクト同士の計算も可能になる

2つのリストの要素同士を演算する

A = [ 1,2,3 ] B = [ 4,5,6 ] 演算の方法は2つ zipを使う mapを使う 1. zipを使う C = [x (演算) y for (x, y) in zip(A, B)] 2. mapを使う from operator import XXX C = map(XXX, A,B) XXX は 10.3. operator — 関数形式の標準演算子 — Python 3.4.3 ド…

matplotlibのヒストグラム用パラメータ抜粋

ドキュメント読んでもなかなかわからないので、メモ matplotlib.pyplot.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=N…

乱数生成

randomモジュールをインポート random.random() 0.0 ~ 1.0までのfloat値を返す random.randint(x,y) x ~ yまでのintを返す random.choice(seq) seqの中から選ぶ 1か-1をランダムで返したいときは、 seq = [-1,1] random.choice(seq)