Python3 入門:ネイティブデータ型 リスト その1 作成 スライス 追加
Python3 入門 ネイティブデータ型 リスト
まぁ一番良く使うものですかね
さて
Dive into Pythonには下記のように書いてありますね。
リストを作るのは簡単だ: カンマで区切って並べた値を、角括弧で包めばいい。
ということで今回は
IPython notebook を使用してみる
理由はブラウザで実行できるのでコピペが非常に楽だという理由のみです。
ターミナルから下記コマンド
ipython notebook
これでブラウザが開くはず
さっそく以下の配列を実行してみた
うん、そのままですね!
ちなみに実行は▶マークです。まじ簡単
次々いこう
indexは0スタートエンドはー1
長さはlen()ってところ んー普通!次はスライス(範囲)
以上スライス
Dive into Pythonには下記
リストを作成する方法は4つ
① |
(利用可能なメモリ量以外に)サイズの制限はない。しかしながら、メモリの使用量が問題となるような場合には、 このリストの結合によって新たなリストがメモリ上に作成されることに注意すること。 |
② |
リストは任意のデータ型の要素を含むことができ、1つのリストの要素がすべて同じ型である必要はない。 実際に、このリストには文字列と浮動小数点数と整数が入っている。 |
③ | append() メソッドはリストの末尾に要素を1つ追加する |
④ |
リストはクラスとして実装されている。リストの「作成」は実際にはクラスのインスタンス化だ。 ゆえに、リストは自身を操作するためのメソッドを持っている。
|
⑤ |
インデックスだ。リストの各要素の値は、リストの中で唯一の値である必要はない。 |
append とextendの違いがわかりにくいな。。。
って追加するんかいって突っ込んだ。。。
Error だしても追加しちゃうのね。。。
要は1つの要素の追加ならエラー出しながらでも可能ということ
複数なら素直にextendせいやって事でしょう
まぁこういう事
続きは その2へ
Python3 入門:ネイティブデータ型 数値 浮動小数点
Python3での数値および浮動小数点を学習する。
まずは四則演算、いつものようにIpythonを使用する
学習開始
In [14]: 1+1
Out[14]: 2
In [15]: 1-1
Out[15]: 0
In [16]: 1*1
Out[16]: 1
In [17]: 1/1
Out[17]: 1.0
In [18]: 1+1.0
Out[18]: 2.0
In [19]: 1-1.0
Out[19]: 0.0
In [20]: 1*1.0
Out[20]: 1.0
In [21]: 1/1.0
Out[21]: 1.0
In [22]: 1.0+1.0
Out[22]: 2.0
In [23]: 1.0-1.0
Out[23]: 0.0
In [24]: 1.0*1.0
Out[24]: 1.0
In [25]: 1.0/1.0
Out[25]: 1.0
In [26]: 1.0-1
Out[26]: 0.0
In [27]: 1.0+1
Out[27]: 2.0
In [28]: 1.0*1
Out[28]: 1.0
In [29]: 1.0/1
Out[29]: 1.0
これを見ると剰余算で割り算は少数をつける
少数の計算は結果は必ず少数で帰るということ
In [30]: type(1)
Out[30]: int
In [31]: type(1.0)
Out[31]: float
要はこういう事ね
Pythonは |
まぁ型強制ができる。
In [32]: float(1)
Out[32]: 1.0
In [33]: int(1)
Out[33]: 1
In [34]: int(1.0)
Out[34]: 1
In [35]: float(1.0)
Out[35]: 1.0
In [36]: 1.12345678901234567890
Out[36]: 1.1234567890123457
In [37]: 123456789012345678901234567890
Out[37]: 123456789012345678901234567890
少数は15位までは正確
整数はどこまでも正確なような気がする?
>こういうことらしい
① | float()関数を呼び出すことで、明示的にintをfloatに型強制できる。 |
② | 当然ながら、int()関数を呼び出すことで、明示的にfloatをintに型強制できる。 |
③ | int()関数は四捨五入ではなく切り捨てを行う。 |
④ | int()関数は、負数を0の方向へ向けて切り捨てる。これは正しい切り捨て関数であり、床関数 (floor function) ではない。 |
⑤ | 浮動小数点数は小数第15位まで正確だ。 |
⑥ | 整数はどんな大きさでも対応できる。 |
In [38]: 11/2
Out[38]: 5.5
In [39]: 11//2
Out[39]: 5
In [40]: -11//2
Out[40]: -6
In [41]: 11/-2
Out[41]: -5.5
In [42]: 11//-2
Out[42]: -6
繰り上がりやがりました //は注意が必要です
In [43]: 11**2
Out[43]: 121
In [44]: 11%2
Out[44]: 1
こいつはまぁ素直
① | /演算子は浮動小数点数の除算を行う。たとえ分子と分母の両方がint型であっても、この演算子はfloat型を返す。 |
② | //演算子はひねくれた整数除算を行う。結果が正の数の場合は、整数への切り捨て(四捨五入ではない)とみなすことができるが、これについては注意が必要だ。 |
③ | 負の数を整数除算する場合、//演算子は最も近い整数に繰り「上げる」。数学的に言えば、−6は−5より小さいので「繰り下げ」というべきだが、−5に切り捨てられることを期待していると足もとをすくわれる。 |
④ | //演算子は常に整数を返すわけではない。分子や分母のどちらか一方でもfloatの場合は、なお結果を最も近い整数に丸めてくれるのだが、実際の戻り値はfloatで返される。 |
⑤ | **演算子は「べき乗」を意味する。つまり112は121だ。 |
⑥ | %演算子は整数除算の余りを返す。11を2で割ると5余り1になるので、ここでの結果は1となる。 |
今回の学習教材はオンラインと図書
オンラインでは
ネイティブデータ型 - Dive Into Python 3 日本語版
3. 形式ばらない Python の紹介 — Python 3.4.2 ドキュメント
参考書籍
これは初めてなら良いと思う、ただこれだけでは開発はできないけれども
とっかかりにはなります。ただし2系です。
こいつはまぁ安定2系と3系のリファレンスとして長く使えそう
ネットが規制されている環境下ならとても良いと思います。
Python3 入門:PyCharm 4 をインストールして Anaconda の Python3 を ProjectInterpreter に指定する。
使って見たくなったので
PyCharm Community Edition 4をインストールする。
現在(2015/05/10)ならDLしてとPopUpがでるのでJavaがなくても
そのまま指示に従えば特に問題はない。
インストールして完了!!
と思ったら甘かった。。。
NewProjectしたら
PyCharm>Preferences>Project: your Project > Project Interpreter
Project Interpreterを指定するのだが(要はPythonのバージョン)
これがシステムにプリインストールされてる方を参照してしまう。。。
すごく脳筋だけれども
Anacondaの下にある Python3 を指定する
3.4.1 (~/.pyenv/versions/anaconda3-2.1.0/bin/python3.4)
これで今のところ解決した。
PyCharm の事なら
良い説明資料が落ちていた
公式(英語)
https://www.jetbrains.com/pycharm/
書籍はPro版ですがちょっとだけ載ってる
あとは日本にも代理店様があった
日本語化してくれてるならうちの会社にも欲しいけど
どうなんだろう。。。
Python3 入門:Dive into Python ネイティブデータ型 ブール値
Python3を基礎からやり直す。
まずは基礎書籍であるDive into Pythonを復習
日本語オンライン版が存在しているし
英語の書籍と日本語の書籍(kindle)を発見した。
なにこの値段の差。。。。まぁWeb版があるから無理に買う事はないか。。。
英語版はもう趣味の世界だよねぇ
ではIPythonにて勉強開始
TrueかFalseだけなんだけどね。。。。
公式チュートリアルでは下記のような記述
-------------------------------------------------------------------------------------------
数値リテラルによって作成されたり、算術演算や組み込みの算術関数によって返されるオブジェクトです。数値オブジェクトは変更不能です; 一度値が生成されると、二度と変更されることはありません。Python の数値オブジェクトはいうまでもなく数学で言うところの数値と強く関係していますが、コンピュータ内で数値を表現する際に伴う制限を受けています。
Python は整数、浮動小数点数、複素数の間で区別を行っています:
- numbers.Integral
-
整数型は、整数(正の数および負の数)を表す数学的集合内における要素を表現する型です。
整数には 2 種類あります:
整数 (int)
整数は無限の定義域を持ち、利用可能な (仮想) メモリサイズの制限のみをうけます。整数はシフト演算やマスク演算のためにバイナリ表現をもつものと仮定されます。負の数は符号ビットが左に無限に延びているような錯覚を与える 2 の補数表現の変型で表されます。
- ブール値 (bool)
-
真偽値の False と True を表します。 False と True を表す 2 つのオブジェクトのみがブール値オブジェクトです。 ブール型は整数型の部分型であり、ほとんどの状況でそれぞれ 0 と 1 のように振る舞いますが、例外として文字列に変換されたときはそれぞれ "False" および "True" という文字列が返されます。
整数表現に関する規則は、負の整数を含むシフト演算やマスク演算において、最も有意義な解釈ができるように意図されています。
-------------------------------------------------------------------------------------------
うん、やってみよう
In [8]: a=0
In [9]: a<0
Out[9]: False
In [10]: a==0
Out[10]: True
In [11]: a>0
Out[11]: False
In [12]: a>=0
Out[12]: True
In [13]: a<=0
Out[13]: True
In [14]: a===0
File "<ipython-input-14-3d16ce4a5655>", line 1
a===0
^
SyntaxError: invalid syntax
おっとトリプルイコールは駄目,
次へ
In [15]: a=True
In [16]: a
Out[16]: True
In [17]: a=False
In [18]: a
Out[18]: False
In [19]: a=true
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-19-0834b8a3a65c> in <module>()
----> 1 a=true
NameError: name 'true' is not defined
In [20]: a=false
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-20-1b1e198e7764> in <module>()
----> 1 a=false
NameError: name 'false' is not defined
うん想定通り
では数値としての扱い検証
In [21]: a=True
In [22]: a+a
Out[22]: 2
In [23]: a-a
Out[23]: 0
In [24]: a*a
Out[24]: 1
In [25]: a/a
Out[25]: 1.0
わかるけど、、、ちょっと気持ち悪いな。。。。
まぁ次
In [26]: a=True
In [27]: b=False
In [28]: a+b
Out[28]: 1
In [29]: a-b
Out[29]: 1
In [30]: a*b
Out[30]: 0
In [31]: a/b
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-31-7a64888ccf6e> in <module>()
----> 1 a/b
ZeroDivisionError: division by zero
こんな所だよね。
あ、ちなみに公式はここです。
Python3 入門:Pyenv Python3 AnacondaをMacへインストールする。
真面目にPythonを勉強したくなったから。。。
購入時にそもそもPythonがインストールされているが
使用したくないので仮想OSにインストールするか悩んだが
今回はMacへインストールする事を選択した。
Anacondaを入れるとPython3系も合わせて入るので
今回はAnacondaを入れる事にします。
Python3.0系 Pythonの環境マネージャ
Anaconda 統計分析や人工知能のlib集
開発環境は初期MacVim
後々にはPyCharm Community Editionに移行して行きたい
本日はAnacondaインストールまで済ませる事にする。
anacondaはPyenvよりインストール出来るようなので直接のDLはしない
pyenvインストール
Anacondaインストール Python3も含む
参考
pyenvを使ってMacにPythonの環境を構築する - Qiita
Pyenvとvirtualenv pluginによるPython環境を構築する - blog.ieknir.com
感謝します。m(__)m
書籍 なんとなく買ったら意外と良かった。
今回やろうと改めてやろうと思ったキッカケをくれた本でした。
gitでクローン
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
bash_profileへ追記
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
source ./.bash_profile
して反映させpyenvインストール完了。
次はPythonインストール
まずは確認する。
pyenv install -l
今回は
anaconda3-2.1.0
をインストールする事にする。
ちなみにPython2系は2.X.Xとanaconda-2.x.xが対応している。
3系とは別なので注意する。
pyenv install anaconda3-2.1.0
pyenv global anaconda3-2.1.0
これでインストール完了し確認する。
python -V
Python 3.4.1 :: Anaconda 2.1.0 (x86_64)
Python3 入門:vagrant でのipython notebookへのアクセス
はまったのでメモメモ
詳しくはこちらQiitaが参考になった
vagrantで作ったVMでipython notebookを立ち上げてローカルからアクセスする - Qiita
config.vm.network "forwarded_port", guest: 8888, host: 8888
これが使えない。。。。
これが楽。。。↓
ipython notebook --ip=0.0.0.0
rbenv インストール
1.まずはgit
yum -y install git
2.rbenv clone
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
3.確認
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l
rbenv --version
4.ruby-build clone
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
5.ruby install
yum -y install openssl-devel これを忘れないように!!
rbenv install -v 2.1.5
rbenv rehash
rbenv versions
rbenv global 2.1.5
ruby -v