サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
dibtp.hateblo.jp
小ネタ.プログラミングコンテストなどでよくある数字のn桁目の数を~などに綺麗に対処する方法 プログラミングコンテストなどでは,よくn桁ある数値を右にずらして…などの問題があります.そんなときに,よく行う操作が桁ごとの数値にバラしてリストや配列などに格納するorその逆を行うといった操作です 例えば,以下のような処理を想定します. 12345 -> [1,2,3,4,5] [1,2,3,4,5] -> 12345 Pythonで,上記のような処理をスマートに行う方法を紹介します >>> n = 12345 >>> l = [int(x) for x in list(str(n))] >>> print(l) [1, 2, 3, 4, 5] >>> new_n = int(reduce(lambda x, y: x + y, [str(x) for x in l])) >>> print(new
前回の記事で書いたPythonスクリプトが半端過ぎたので、 少しだけアップデートしました。 オプションで動詞だけ出すとか、過去形の単語で引いても意味が出てくるとかまだまだ改良したい部分はありますが、 これ以上改良するなら多分自分のGitHubアカウント上にでも上げてやります。 #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import urllib.request import urllib.parse from html.parser import HTMLParser from collections import Counter WEBLIO_URL = "http://ejje.weblio.jp/content/" class MyHTMLParser(HTMLParser): def __init__(self
このページのまんまです. ファイルはutf-8なのになぜか文字化ける(というか,みたいな表記になってしまう)ので,↑のように設定しました. 環境はMac OSΧ 10.10.1,git versionは2.2.1です. $ git config --global core.pager "nkf -w | LESSCHARSET=utf-8 less" 前までは文字化けしてなかった気がするんだけどなぁ・・・
かなり基本的な内容です.それと記事に一貫性があるわけではないです. 1. with statement 定番のwithです.ほとんどの場合で使えると思うので,積極的に使いましょう. Goでは同じようなことをdeferを使ったりしますね. # not good... f = open("./test.txt") foo = f.read()とかその辺 f.close() # better! with open("./test.txt") as f: foo = f.read() 上のコードでは,例えばfoo = f.read()の部分のコードが長い場合,f.close()を忘れがちですよね. 下のコードではそのような心配が入りませんし,簡潔です. 2. collections pythonはよくbattery includedな言語と言われますが,その名の通り外部のライブラリに あまり頼らず
Pythonとかではset型が標準でありますが、Go言語には標準ではなさそうなので調べてみたら便利なライブラリが見つかったので簡単に紹介。 deckarep/golang-set 使い方は以下のような感じです。 package main import ( "fmt" "github.com/deckarep/golang-set" ) func main() { list := []int{1, 2, 3, 4, 5, 2, 4, 6} set := mapset.NewSet() for _, v := range list { set.Add(v) } fmt.Println(set) // Set{1, 2, 3, 4, 5, 6} fmt.Println(set.Cardinality()) // 6 } 最初set型の長さ(要素の数)の取り方がわからなかったのですが、Cardin
7 Python Regular Expressions Examples – Re Match Search FindAlの一部翻訳+αです。 正規表現は特に混乱することが多いのでメモ。一部端折るので必ず元記事の方も参照して下さい。 また、必要に応じてPythonの公式ドキュメントも参照しています。 Pythonの正規表現パッケージは以下でimportできる。 In [1]: import re 1. Raw Strings in Python Pythonのパーサーは文字列リテラル中にある\(バックスラッシュ、Windowsなど環境によっては円記号)をエスケープ文字と見做す。 例えば、Pythonのパーサーは\nを改行と置き換える。 この動作は正規表現を使用する際には結構困る。なぜなら、reパッケージでは正規表現において特別な意味を持つ文字(例えば*や+)などを エスケープしたいときに
Go言語のArrayとSliceについて 調べるたびに忘れるのでメモしておきます。 基本的にGo Slices: usage and internals に基いています。 というかほとんど直訳です。 Introduction Sliceは他の言語のArrayに似ているが、違う部分がある。 Arrays Slice型はGo言語におけるArray型の抽象的なものである。 Array型は長さ(length)と要素(element)の型を明らかにしたものである。 下の例で、[4]intは4つのint型からなるArray型である。 長さは型の一部分である([4]int != [5]int)。 var a [4]int a[0] = 1 i := a[0] // i == 1 Go言語では、Array型はzero valueで初期化されていて、すぐに使える。 a[2] == 0 Go言語のArrayは
bzip2とgzipのParallel版、pbzip2とpigz 巨大なテキストファイルを圧縮する必要に迫られたのですが、標準のbzip2やgzipは並列処理に対応しておらず、今どきのマシンだともったいないです。 そこで調べてみると、それぞれのParallel版が見つかりました。pbzip2とpigzです。 Ubuntu 14.04では公式のリポジトリに含まれているようです。早速インストールして、簡単に圧縮解凍のベンチマークを取ってみました。 使うデータは約15GBのcsvファイルです。ほとんどの要素が0のいわゆるsparseなデータなので、圧縮後のデータサイズは物凄く小さくなることが予想されます。 前準備 2つともUbuntuならコマンド一発で入ります。 $ sudo apt-get install pbzip2 $ sudo apt-get install pigz 実験 今回使用する
Skip-gramについて、詳しくはこちら 英語版のWikipediaはこんなニッチな技術も乗っていたりするんですね。びっくりしました。 コードはこちら そうとう不効率な実装になってしまったが、いい実装が思いつかない…
青空文庫のクローラをGo言語で書いてみました。 GitHub - masatana/aozorago 実際の実装はGitHubのリポジトリを見てもらえればわかると思います。 基本的にはトップページ→インデックスページ→図書カードページ→zipの流れで取ってきています。 Goroutinesを使ってConcurrentに取ってこられるようにしたつもりですが よく考えたら同一ドメインへのアクセスなので余り意味なかった気が…。 青空文庫のファイルは全てShift-JISみたいなので、拡張するならダウンロードしたファイルを一回解凍してから中のエンコードを書き換えて、また圧縮するといったような実装も考えられますね。 また、単に青空文庫のファイルが欲しいという方は青空文庫のリポジトリから取ってきたほうがいいと思います。
このページを最初にブックマークしてみませんか?
『dibtp.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く