タグ

Pythonとtipsに関するstick23rdのブックマーク (16)

  • 初心者がPythonを覚える為の本の選び方を体系化してみた(2017版) - Lean Baseball

    【2020/1/9更新】2020年版もあります, こちらもよろしくおねがいします! 【2018/12/24追記】最新版を公開しました!「Pythonまとめ・2019年版 - Webとデータ分析を初心者が仕事にするまで - Lean Baseball」 ※2017/12/24 最新版をこちらに上げました、この内容は古いのでこちらを見ていただけると幸いです🙇‍♂️ Pythonの学び方と,読むべきを体系化しました2018〜初心者から上級者まで こんにちは.野球(とグルメ)の人です. 会社と仕事はメッチャ楽しいのですが,今日はそれと関係なくPythonの話題を久々に.*1 昨年から,「AI(えーあい)」だの「でぃーぷらーにんぐ」だの「機械学習」といったワードとともにPythonを覚えようとしている方が多いらしく, 何から学ぶべきか 何のがオススメか 簡単に覚えて僕もいっちょ前に「えーあい

    初心者がPythonを覚える為の本の選び方を体系化してみた(2017版) - Lean Baseball
  • Pythonらしいコードの書き方 - Kesinの知見置き場

    はてなブログに移行して最初の記事はやはりPythonネタにしました。 はてなブログいいですね。デザインの編集がやりやすくなったのと、Markdownで書けるのが素晴らしいです。 PyCon 2013の動画を見ていたら、素晴らしい"Transforming Code into Beautiful, Idiomatic Python"という発表を見つけたのでそのまとめです。 今どきのPythonコードのベターな書き方を紹介しています。 Transforming Code into Beautiful, Idiomatic Python ... スライドはこちらにありました 結構長くなってしまったので、知ってる項目は読み飛ばしてもらえばと思います。 ループの基 整数のループ まずは基のループ。 Cのfor int i=0; i<6; i++をPythonで単純に書くとこうなります。 for

    Pythonらしいコードの書き方 - Kesinの知見置き場
  • あなたのPythonを爆速にする7つの方法

    最近プロコン(プログラミング・コンテスト)をはじめました。 基的にはアルゴリズム勝負なのですが、とにかく速度を競うプロコンです。 小手先の速度チューニングもバカにできません。 何が速くて何が遅いのかはっきりさせるため、ボトルネックになりそうな操作のベンチマークを取りました。 実行環境は下記のとおりです。 python2.7.5 OS: MacOSX 11 CPU: Core i7 2GHz (4core) MEM: 16GB その1. 配列の初期化を高速化する まずはプロコンの基中の基、配列の初期化です。 下記7つの初期化方法を比較してみます。 空配列へappendして配列をつくる for内包表記で配列をつくる サイズ1(None)の配列を乗算してから値を代入する サイズ1(None)の配列を乗算する サイズ1(ゼロ)の配列を乗算する すべてゼロのarrayをつくる 0〜nのarra

  • Pythonを勉強していて「こういう書き方があったのか」と思ったことを3つ - プログラミングを勉強するブログ

    プログラミングを勉強していると 「こういう時はこんな書き方ができるのか」 とか 「この書き方を知っていればあの時のコードもっとうまく書けたな」 と感じることがあると思います。 この記事では私がPythonを勉強していてそう感じたことを3つ紹介したいと思います。 (常識だよ!ってことばかりだったらすみません) 1.複数の変数を比較する条件式の書き方 例えば3つの変数a, b, cがすべてNoneであれば真となる条件式は通常 if a is None and b is None and c is None: print u'すべてNone' のように書きますが次のように書くこともできます。 if a is b is c is None: print u'すべてNone' これはPythonの比較演算子の特徴を利用した書き方です。 Pythonでは変数aが1より大きく5より小さいという条件式を書

    Pythonを勉強していて「こういう書き方があったのか」と思ったことを3つ - プログラミングを勉強するブログ
  • Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD

    Pythonを始めたばかりのユーザーの多くが、どちらのバージョンを使えばいいのか迷っています。私の答えは、「気に入ったチュートリアルに書かれているバージョンにしましょう。そして、あとで違いを調べてください」という言葉につきます。 それでは、新しいプロジェクトを始めるときにはどちらを選べばいいのでしょうか? 使おうとしているライブラリを全てサポートしているなら、2.7.x系と3.x系のどちらを使ってもよいでしょう。そうはいっても、この2つのメジャーバージョンについて大きな違いを見ておくのは良いでしょう。どちらかのみでコードを書いたり、プロジェクトに使おうとしている時によくある落とし穴を避けられるからです。 __future__ モジュール Python 3.x で導入されていて Python 2 で使えないキーワードについては、 __furute__ モジュールをインポートすることで Pyt

    Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD
  • 重複する要素を取り除いだリストと重複する要素だけを取り出したリスト – blog.PanicBlanket.com

    リストから重複した要素を取り除く Python には uniq がないらしい。ああ、なんてこった。 というわけで作ってみた。 def uniq(lis): r = [] for i in lis: if i not in r: r.append(i) return r a = [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] print 'Original: ', a print 'Uniq: ', uniq(a) もうちょっときれいにならないかな。reduceでできそうな気がする。 ^o^ > python uniq.py Original: [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] Uniq: [1, 2, 3, 4, 5, 6, 7, 8, 9] リストから重複した要素だけを取り出す 今度は逆に、重複した要素だけを取

    stick23rd
    stick23rd 2014/04/02
    reduceを使ったリストの重複要素の取り出し
  • 30 Python Language Features and Tricks You May Not Know About

    Since I started learning Python, I've kept a list of "tricks". Any time I saw a piece of code that made me think "Cool! I didn't know you could do that!" I experimented with it until I understood it and added it to the list. This post is a summary of that list. If you are an experienced Python programmer, chances are you already know most of these but you might still find a few surprises. If you a

  • 初めてのPython(5) importとfromとreloadでモジュールを使いこなす

    “初めてのPython“も佳境ですね。 あと2部読み進めればおしまいです。 “初めてのPython“を全て読むことが出来れば、Pythonistaとしての第一歩を踏み出せたことになります(自分の中で)。 初めてのPython V部 “初めてのPython“のV部は、”モジュール“に関してまとられています。 Pythonにおけるモジュールのインポートの仕方や、再読み込み、その扱いまで。 と、”その前にモジュールって何?“という方のためにWikipediaから引用しておきます。 プログラミングにおいて、一連の機能をひとまとまりになる複数の機能:モジュールに分割し、それぞれ別に開発する場合がある。こうすることで、全体として完成を早めることが出来る上、モジュール単位でテストしたりすることが可能になり、モジュールの入れ替えで機能を高めたり補修したりすることができるようになる。 モジュール –

  • pipの使い方 - そこはかとなく書くよ。

    注意 この内容はすでに古くなっています。 pipの使い方 (2014/1バージョン) を参照してください。 pipとは、Pythonにおけるパッケージ管理システムです。easy_installというツールもあるのですが、pipはこのeasy_installを置き換えるものとして開発されています。rubyのgemperlのcpan的な位置づけです。 同じパッケージ管理ツールとしてsetuptools置き換えのdistributeというものもあるのですが、こちらはsetuptools全体を置き換えるものとして開発されており、pipはsetuptoolsの一部であるeasy_installを置き換える形です。 なお、現在のpipのバージョンは0.8.2で、このエントリはこのバージョンを使っています。 なにかおかしい点があれば、ご指摘ください。 > 識者の方々 pipのinstall まずはea

    pipの使い方 - そこはかとなく書くよ。
  • Chefに挫折したあなたへ。Fabricのすすめ

    サーバ設定作業は面倒で間違いを犯しやすいため、Chef/Puppetなどのツールで自動化したいと考えている方は多いと思います。 私もそのような理由からChef(-solo)を習得しようと試行錯誤していました。 その結果、ある程度は動くようになったものの次のような問題があると思いました。 学習に時間がかかる 私は正直、今でもどのファイルに何を書くのかよく分かってないです。 幾分か簡単だと言われるchef-soloでも公式サイトのドキュメントだけではよく理解出来ませんでした。 また、バージョンによる差異なのか目的が異なるのか分かりませんが、ブログ記事を参考にしようとすると十人十色でどれが私に合った手順なのかわかりませんでした。 例え最終的に理解できたとしても、私やあなたが何日もかけて理解できないことはチームのメンバーも理解するのは難しいと思います。 対象サーバにインストールする必要がある Ch

  • Pythonの隠された機能9つ – taichino.com

    StackOverflowでHidden features of Pythonという面白い質問がありました。原文の方では何十も項目があるのですが、独断と偏見で9個に絞って紹介します。 1. chaining comparision operator 不等式を連結出来るなんて初めて知りました。スーパーかっこいいです。今まで1 < x and x < 10とか書き続けてました。 x = 5 if 1 < x < 10: print "yay" if x < 10 < x*10 < 100: print "yaay!" if 5 == x > 4: print "yaaay!!" 他の言語でも出来んの?と思ってちょっと調べてみましたが、どうもPythonだけっぽいです。やっぱりPython最高ですね! 2013.03.05 追記 twitterで突っ込まれました。Pythonだけって言うのは嘘で

  • internのひみつ - atsuoishimoto's diary

    Pythonにはintern()という組み込み関数がある。結構特別扱いで重要な組み込み関数なのだが、使い道が今ひとつ分かりにくいのか知らない人も多いようだ。 intern <捕虜・危険人物などを>(一定の区域内に)拘禁する, 抑留する. [新英和(第7版)・和英(第5版)中辞典 株式会社研究社] なんだか物騒な関数だが、同じような機能を持つLisp族の関数から名前を拝借したのだろう。intern()をPythonスクリプトで書くと、だいたいこんな感じの処理になる。 _intern_map = {} def intern(s): if s in _intern_map: return _intern_map[s] else: _intern_map[s] = s s.interned = True return s 文字列sと同じ文字列が専用の辞書_intern_mapに登録済みなら登録済み

    internのひみつ - atsuoishimoto's diary
  • csvモジュールがUnicode入力をサポートしていない罠 - bonlife

    id:piro_sukeさんがアレコレやってるのを見てちょいと試しているうちに、予想外なところで罠にハマってしまったbonlifeです。同じことで躓く人はあまりいないような気がしますが、備忘録メモです。 csvモジュールで日語を扱う場合に気をつけないと悲しい気持ちになってしまうかもしれませんよ、というお話。 サンプル1 sys.getdefaultencoding() で得られる文字コードは cp932 ファイルの文字コードは cp932 出力するCSVの文字コードは cp932 # -*- coding: cp932 -*- import sys import csv import codecs print "default encoding : %s" % (sys.getdefaultencoding()) f = codecs.open('out.csv','wb','cp932

    csvモジュールがUnicode入力をサポートしていない罠 - bonlife
    stick23rd
    stick23rd 2009/12/02
    CSVモジュールを使うときに、気をつけること。
  • Python 辞書型のソート

    Python で辞書に対して、value をキーにしてソート。 sorted(dict.items(), lambda x,y : cmp(x[1], y[1])) key をキーにしてソートする場合は、以下かな。試してないからわからない。 sorted(dict.items(), lambda x,y : cmp(x[0], y[0])) 面倒くさいのは、dict.items() は(key, value)というタプル(tuple)のリストなので、 key にアクセスするときには [0] で、value にアクセスするときには [1] でアクセスしないと いけないところ。 色々と google してみたけど、結局この方法しか見つからなかった。 他にうまい方法があれば教えてください。 #!/usr/bin/env python # -*- coding: utf-8 -*- # impor

    stick23rd
    stick23rd 2009/11/26
    dictionary・辞書型のソート
  • PythonのUnicodeEncodeErrorを知る - HDEラボ

    Pythonにはじめて触って、いつのまにか1年が過ぎたのですが、一番はまったのは、やっぱりunicodeの扱いだったと思います。 特に、 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128) のようなエラーにはさんざん悩まされました。ここがたとえばrubyなど他の言語と比べてわかりにくいために、Pythonが取っつきにくい言語になっているのではないか、と個人的には思います。 そこで、このエラーに関係するはまりどころとTipsをいくつか列挙してみました。これからPythonに触れられる方の参考になればと思います。 なお、環境はUNIX上のPython 2.4, 2.5を想定しています。 u1はunicode型で、s1はstr型です。s1にどのよ

    stick23rd
    stick23rd 2009/11/25
    Pythonの文字コードについて解説
  • Pythonの開発環境をvimに整える - やさしいデスマーチ

    vimPythonの開発環境を作ってみました。 自動インデント コード補完 スクリプトの実行 インデントの設定 自動 インデントはPythonでコーディングをする場合には必須な機能です。定番の設定があるので、.vimrcに追記します。 filetype plugin on autocmd FileType python setl autoindent autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd FileType python setl expandtab tabstop=4 shiftwidth=4 softtabstop=4インデントは4文字でタブ文字ではなく半角スペースで設定するようにしています。また、if等の

    Pythonの開発環境をvimに整える - やさしいデスマーチ
  • 1