SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
ALPS チュートリアル: Python 
ALPS チュートリアル: Python 
CMSI ハンズオン 
ALPS Collaboration 
http://alps.comp-phys.org/ 
2014-10-16 
1 / 20
ALPS チュートリアル: Python 
Outline 
1 データ型 
2 制御フロー 
3 関数 
4 モジュール 
5 ファイルの読み書き 
6 参考文献 
2 / 20
ALPS チュートリアル: Python 
データ型 
基本的なデータ型 
このセクションではPython で使われる基本的なデータ型を紹介し 
ます. array はnumpy モジュールで定義されている型で,Python 
がもともと持っている型ではありませんが,科学計算では非常に便 
利な性質を持つので紹介します. 
数値int, (long), 
oat, complex 
文字列'hello,python' 
list a = [1, 2, 3] 
tuple b = (1, 2, 3) 
dictionary c = f'apple': 100, 'orange': 200, 'pear': 300g 
set set([1, 2, 3]) 
bool True, False 
array numpy array([1,2,3]) 
3 / 20
ALPS チュートリアル: Python 
データ型 
数値 
整数, 倍精度浮動小数, 複素数の3 種類あります.整数はPython 
のバージョンで扱いが変わります.単精度浮動小数はありません. 
int, (long) 
python3 ではint,long はint に統合されました. 
python2x とpython3x では整数同士の演算で計算結果がちがい 
ます! 
python2: -1/2 = -1, python3: -1/2 = -0.5 

oat は倍精度のみです.単精度はありません. 
complex 
'j' もしくは'J' で虚数部を表す2 + 3j 
実部real(2+3j) = 2, 虚部imag(2+3j) = 3 
型変換を行えます. 
>>> a = 1.8 
>>> int(a) 
1 
>>> a = 3 
>>> float(a) 
3.0 
4 / 20
ALPS チュートリアル: Python 
データ型 
文字列 
>>> s = 'ab:cd:ef' # 文字列の定義 
>>> s = s.split(':') # 指定した文字で文字列を分割 
>>> print s 
['ab', 'cd', 'ef'] 
>>> '-'.join(s) # 指定した文字で文字列同士を結合 
'ab-cd-ef' 
>>> 'a' + 'b' + 'c' # 文字列を結合 
'abc' 
シングルクォートもしくはダブルクォートで囲った文字列で定 
義できます. 
複数行の文字列は"'..."' もしくは"""...""" で囲む 
5 / 20
ALPS チュートリアル: Python 
データ型 
list, tuple 
>>>a = [1,2,3,4,5] # list 
>>>a[0] # インデックスは0 スタート 
1 # 要素1 個だけなら返り値はスカラー 
>>>a[2:4] # 2<=,<4 番目のの要素が返される. 
[3,4] # 複数の要素なら返り値はリスト. 
>>>b = (1,2,3,4,5) # tuple 
>>>b[1:] # ':' の値を省くこともできる 
(2, 3, 4, 5) 
ここではリストの要素として数値のみを扱ったが,python オ 
ブジェクトなら何でもリストの要素として扱える 
6 / 20
ALPS チュートリアル: Python 
データ型 
list のメソッド 
>>>a.reverse() # 要素の並びを逆にする 
>>>a # a そのものが変更されるので注意! 
[5, 4, 3, 2, 1] 
>>>a.pop() # リストの最後尾の要素を取り出す. 
1 # 返り値は取り出された要素 
>>>a 
[5, 4, 3, 2] 
>>>a.sort() 
>>>a 
[2, 3, 4, 5] 
ここではリストの要素として数値のみを扱ったが,python オ 
ブジェクトなら何でもリストの要素として扱える 
7 / 20
ALPS チュートリアル: Python 
データ型 
list とtuple の違う点(1) 
>>>b = (1) # これはtuple にならない! 
>>>type(b) 
int # 整数扱いになる 
>>>b = (1,) # 要素1 個のtuple を定義する 
>>>type(b) 
tuple # これはちゃんとtuple になっている 
>>>a = [1] # これはlist 
>>>type(a) 
list 
8 / 20
ALPS チュートリアル: Python 
データ型 
list とtuple の違う点(2) 
>>>b += (2, 3, 3) # 要素を付け加えることはできる 
>>>b 
(1, 2, 3, 3) 
>>>b[3] = 5 # 要素を変更することはできない 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: 'tuple' object does not support item assignment 
要素1 個の場合の扱いが違う 
tuple の要素の値は変更できない. 
tuple は辞書のキーに登録できる.list は不可. 
9 / 20
ALPS チュートリアル: Python 
データ型 
list のコピー 
浅いコピーと深いコピーの2 種類ある 
浅いコピーではオブジェ 
クトのアドレスをコピー 
する 
深いコピーではオブジェ 
クトの値をコピーする 
a 
アドレス値 
0x7fff5fbffae8 101 
b 
アドレス値 
0x6aff5fbff128 0x7fff5fbffae8 
a 
アドレス値 
0x7fff5fbffae8 101 
b 
アドレス値 
0x6aff5fbff128 101 
>>>a = [101, 102, 103] 
>>>b = a # アドレスをコピー 
>>>a[1] = 333 
>>>print a, b 
[101, 333, 103] [101, 333, 103] 
>>>b = a[:] # 値をコピー 
>>>a[1] = 444 
>>>print a, b 
[101, 444, 103] [101, 333, 103] 
10 / 20
ALPS チュートリアル: Python 
データ型 
ネストされたlist のコピー 
浅いコピーになってしまう例 
>>>a = [1, [2, 3]] 
>>>b = a[:] 
>>>a[0] = 4 
>>>a[1][0] = 5 
>>>print a, b 
[4, [5, 3]] [1, [5, 3]] 
>>> 
深いコピー 
>>>import copy 
>>>a = [1, [2, 3]] 
>>>b = copy.deepcopy(a) 
>>>a[0] = 101 
>>>a[1][0] = 102 
>>>print a, b 
[101, [102, 3]] [1, [2, 3]] 
ネストされているとスライス':' で返されるのがアドレスに 
なってしまう 
ネストされたlist で深いコピーをするにはcopy モジュールの 
deepcopy を使う 
11 / 20
ALPS チュートリアル: Python 
データ型 
辞書型の使い方 
>>>dic = {'key0': 0, 'key1': 1} # key:value の組を登録 
>>>dic['key2'] = 2 # key2:2 を登録 
>>>dic.keys() # 辞書に登録されている全てのkey 
['key2', 'key1', 'key0'] 
>>>dic.values() # 全てのval 
[2, 1, 0] 
>>>dic.items() # 全てのkey:val の組を表示 
[('key2', 2), ('key1', 1), ('key0', 0)] 
>>>del dic['key0'] # 辞書からkey を削除 
>>>dic.items() 
[('key2', 2), ('key1', 1)] 
辞書の要素はソートされていない.登録順なども関係ない. 
12 / 20
ALPS チュートリアル: Python 
制御フロー 
if-elif-else 文の使い方 
if-elif-else で条件分岐を作れる. 
>>>if a > 0: 
>>> print '0' 
>>>elif a == 0: 
>>> print '1' 
>>>else: 
>>> print '2' 
>>> 
>>> 
三項演算子 
>>>val = val1 if cond1 else val2 
13 / 20
ALPS チュートリアル: Python 
制御フロー 
for 文の使い方 
>>>for i in ('a', 'b', 'c', 'd'): 
>>> print i, # コンマで改行を抑制している 
a b c d 
アンパック代入とenumerate() 
>>>for i,j in enumerate(('a', 'b', 'c', 'd')): 
>>> print i, j 
0 a 
1 b 
... 
アンパック代入はpython で使える一般的なテクニックです. 
>>>i,j,k = ['a', 'b', 'c'] 
14 / 20
ALPS チュートリアル: Python 
制御フロー 
while 文の使い方 
a = 0 
while a in range(10): 
a += 1 
if a < 3: 
continue 
elif a == 8: 
break 
print a 
カレントディレクトリに上の内容でexWhile.py というファイ 
ルを作ってimport してみましょう 
"val in シークエンス:" というフレーズはwhile だけでなくif, 
for など至る所で使えます 
continue, break も同じくif, for などでも使えます 
15 / 20
ALPS チュートリアル: Python 
関数 
関数 
>>> def f(x, y): 
>>> ....z = x * y # 空白4 つのインデント! 
>>> ....for i in [1, 2, 3]: 
>>> .... z += i 
>>> ....return z 
>>> 
>>> f(2,3) 
12 
def 関数名(変数,...): で関数が定義できます 
Python ではインデント(ここの例では空白4 つ) によりスコー 
プを制御します 
16 / 20
ALPS チュートリアル: Python 
モジュール 
Python プログラムの階層構造 
プログラムファイルのディレクトリ構成== 名前空間 
モジュール 
1 つの"hoge.py" ファイルが1 つのモジュール 
パッケージ 
ファイルの階層構造 
pyalps/ 
alea.py 
dataset.py 
モジュールの階層構造 
pyalps.alea.class.method 
pyalps.dataset.class.method 
17 / 20
ALPS チュートリアル: Python 
モジュール 
モジュールの読み込み 
>>> import fff as f # 別名をつけてインポート 
>>> f.ggg(x, y) 
... 
>>> from fff import * # fff 以下のすべてをインポート 
>>> ggg(x, y) # 名前空間fff が外れる 
... 
>>> from fff import ggg as g # ggg のみを指定してインポート 
>>> g(x, y) 
fff モジュール中のggg 関数を呼び出しています. 
呼び出し方により名前空間の階層が変わっています. 
18 / 20
ALPS チュートリアル: Python 
ファイルの読み書き 
ファイルの読み書き 
ファイルから1行ごとにデータを読み込む方法 
for line in open('dat.txt', 'r'): 
items = line.split('') 
print items[0], float(items[1]) 
入力データ(dat.txt) 
a 3.432 
b 1.42 
c 2.159 
open でdat.txt ファイルをreadonly で読み込む 
読み込んだファイルを1 行毎に処理する.読み込まれた行は1 
つのストリングとして扱われるので区切り文字(今の場合空 
白)で分割している. 
読み込んだストリングを浮動小数点にキャストしている. 
上の例ではfor 文の終了とともにファイルは自動で閉じられる.し 
かし,一般的には 
f = open('dat.txt', 'r') として読み込んだ場合,ファイルを読 
み終えたらf.close() で閉じなければならない. 
19 / 20
ALPS チュートリアル: Python 
参考文献 
参考文献 
科学技術計算のためにpython を始めよう 
http://www.ike-dyn.ritsumei.ac.jp/~uchida/ 
scipy-lecture-notes/intro/index.html 
初心者のはまりどころhttp://webtech-walker.com/ 
archive/2010/10/13191417.html 
Doug Hellmann さんhttp://doughellmann.com 
標準モジュールなどの使い方が例とともに書いてあり分かりや 
すい 
20 / 20

Weitere ähnliche Inhalte

Was ist angesagt?

Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについてdekosuke
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Yuichi Sakuraba
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」Nagi Teramo
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...Kazuya Wada
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたKazuya Wada
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)Google Developer Relations Team
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 

Was ist angesagt? (20)

Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
Task
TaskTask
Task
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについて
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
 
前期講座09
前期講座09前期講座09
前期講座09
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
Haskell で CLI
Haskell で CLIHaskell で CLI
Haskell で CLI
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
 
Testman
TestmanTestman
Testman
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 

Ähnlich wie ALPSチュートリアル(4) Python入門

Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPIDaisuke Igarashi
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCamlHaruka Oikawa
 
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」fukuoka.ex
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル理 小林
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
rpi_handson_2.5
rpi_handson_2.5rpi_handson_2.5
rpi_handson_2.5teruyaono1
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門kamukiriri
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章Kazufumi Ohkawa
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪yashigani
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateepocketberserker
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526 masahitojp
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 

Ähnlich wie ALPSチュートリアル(4) Python入門 (20)

Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
 
Functional Way
Functional WayFunctional Way
Functional Way
 
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
rpi_handson_2.5
rpi_handson_2.5rpi_handson_2.5
rpi_handson_2.5
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門VS勉強会 .NET Framework 入門
VS勉強会 .NET Framework 入門
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 

Mehr von Computational Materials Science Initiative

Mehr von Computational Materials Science Initiative (20)

MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
ALPSチュートリアル
ALPSチュートリアルALPSチュートリアル
ALPSチュートリアル
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
 

Kürzlich hochgeladen

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Kürzlich hochgeladen (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

ALPSチュートリアル(4) Python入門

  • 1. ALPS チュートリアル: Python ALPS チュートリアル: Python CMSI ハンズオン ALPS Collaboration http://alps.comp-phys.org/ 2014-10-16 1 / 20
  • 2. ALPS チュートリアル: Python Outline 1 データ型 2 制御フロー 3 関数 4 モジュール 5 ファイルの読み書き 6 参考文献 2 / 20
  • 3. ALPS チュートリアル: Python データ型 基本的なデータ型 このセクションではPython で使われる基本的なデータ型を紹介し ます. array はnumpy モジュールで定義されている型で,Python がもともと持っている型ではありませんが,科学計算では非常に便 利な性質を持つので紹介します. 数値int, (long), oat, complex 文字列'hello,python' list a = [1, 2, 3] tuple b = (1, 2, 3) dictionary c = f'apple': 100, 'orange': 200, 'pear': 300g set set([1, 2, 3]) bool True, False array numpy array([1,2,3]) 3 / 20
  • 4. ALPS チュートリアル: Python データ型 数値 整数, 倍精度浮動小数, 複素数の3 種類あります.整数はPython のバージョンで扱いが変わります.単精度浮動小数はありません. int, (long) python3 ではint,long はint に統合されました. python2x とpython3x では整数同士の演算で計算結果がちがい ます! python2: -1/2 = -1, python3: -1/2 = -0.5 oat は倍精度のみです.単精度はありません. complex 'j' もしくは'J' で虚数部を表す2 + 3j 実部real(2+3j) = 2, 虚部imag(2+3j) = 3 型変換を行えます. >>> a = 1.8 >>> int(a) 1 >>> a = 3 >>> float(a) 3.0 4 / 20
  • 5. ALPS チュートリアル: Python データ型 文字列 >>> s = 'ab:cd:ef' # 文字列の定義 >>> s = s.split(':') # 指定した文字で文字列を分割 >>> print s ['ab', 'cd', 'ef'] >>> '-'.join(s) # 指定した文字で文字列同士を結合 'ab-cd-ef' >>> 'a' + 'b' + 'c' # 文字列を結合 'abc' シングルクォートもしくはダブルクォートで囲った文字列で定 義できます. 複数行の文字列は"'..."' もしくは"""...""" で囲む 5 / 20
  • 6. ALPS チュートリアル: Python データ型 list, tuple >>>a = [1,2,3,4,5] # list >>>a[0] # インデックスは0 スタート 1 # 要素1 個だけなら返り値はスカラー >>>a[2:4] # 2<=,<4 番目のの要素が返される. [3,4] # 複数の要素なら返り値はリスト. >>>b = (1,2,3,4,5) # tuple >>>b[1:] # ':' の値を省くこともできる (2, 3, 4, 5) ここではリストの要素として数値のみを扱ったが,python オ ブジェクトなら何でもリストの要素として扱える 6 / 20
  • 7. ALPS チュートリアル: Python データ型 list のメソッド >>>a.reverse() # 要素の並びを逆にする >>>a # a そのものが変更されるので注意! [5, 4, 3, 2, 1] >>>a.pop() # リストの最後尾の要素を取り出す. 1 # 返り値は取り出された要素 >>>a [5, 4, 3, 2] >>>a.sort() >>>a [2, 3, 4, 5] ここではリストの要素として数値のみを扱ったが,python オ ブジェクトなら何でもリストの要素として扱える 7 / 20
  • 8. ALPS チュートリアル: Python データ型 list とtuple の違う点(1) >>>b = (1) # これはtuple にならない! >>>type(b) int # 整数扱いになる >>>b = (1,) # 要素1 個のtuple を定義する >>>type(b) tuple # これはちゃんとtuple になっている >>>a = [1] # これはlist >>>type(a) list 8 / 20
  • 9. ALPS チュートリアル: Python データ型 list とtuple の違う点(2) >>>b += (2, 3, 3) # 要素を付け加えることはできる >>>b (1, 2, 3, 3) >>>b[3] = 5 # 要素を変更することはできない Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment 要素1 個の場合の扱いが違う tuple の要素の値は変更できない. tuple は辞書のキーに登録できる.list は不可. 9 / 20
  • 10. ALPS チュートリアル: Python データ型 list のコピー 浅いコピーと深いコピーの2 種類ある 浅いコピーではオブジェ クトのアドレスをコピー する 深いコピーではオブジェ クトの値をコピーする a アドレス値 0x7fff5fbffae8 101 b アドレス値 0x6aff5fbff128 0x7fff5fbffae8 a アドレス値 0x7fff5fbffae8 101 b アドレス値 0x6aff5fbff128 101 >>>a = [101, 102, 103] >>>b = a # アドレスをコピー >>>a[1] = 333 >>>print a, b [101, 333, 103] [101, 333, 103] >>>b = a[:] # 値をコピー >>>a[1] = 444 >>>print a, b [101, 444, 103] [101, 333, 103] 10 / 20
  • 11. ALPS チュートリアル: Python データ型 ネストされたlist のコピー 浅いコピーになってしまう例 >>>a = [1, [2, 3]] >>>b = a[:] >>>a[0] = 4 >>>a[1][0] = 5 >>>print a, b [4, [5, 3]] [1, [5, 3]] >>> 深いコピー >>>import copy >>>a = [1, [2, 3]] >>>b = copy.deepcopy(a) >>>a[0] = 101 >>>a[1][0] = 102 >>>print a, b [101, [102, 3]] [1, [2, 3]] ネストされているとスライス':' で返されるのがアドレスに なってしまう ネストされたlist で深いコピーをするにはcopy モジュールの deepcopy を使う 11 / 20
  • 12. ALPS チュートリアル: Python データ型 辞書型の使い方 >>>dic = {'key0': 0, 'key1': 1} # key:value の組を登録 >>>dic['key2'] = 2 # key2:2 を登録 >>>dic.keys() # 辞書に登録されている全てのkey ['key2', 'key1', 'key0'] >>>dic.values() # 全てのval [2, 1, 0] >>>dic.items() # 全てのkey:val の組を表示 [('key2', 2), ('key1', 1), ('key0', 0)] >>>del dic['key0'] # 辞書からkey を削除 >>>dic.items() [('key2', 2), ('key1', 1)] 辞書の要素はソートされていない.登録順なども関係ない. 12 / 20
  • 13. ALPS チュートリアル: Python 制御フロー if-elif-else 文の使い方 if-elif-else で条件分岐を作れる. >>>if a > 0: >>> print '0' >>>elif a == 0: >>> print '1' >>>else: >>> print '2' >>> >>> 三項演算子 >>>val = val1 if cond1 else val2 13 / 20
  • 14. ALPS チュートリアル: Python 制御フロー for 文の使い方 >>>for i in ('a', 'b', 'c', 'd'): >>> print i, # コンマで改行を抑制している a b c d アンパック代入とenumerate() >>>for i,j in enumerate(('a', 'b', 'c', 'd')): >>> print i, j 0 a 1 b ... アンパック代入はpython で使える一般的なテクニックです. >>>i,j,k = ['a', 'b', 'c'] 14 / 20
  • 15. ALPS チュートリアル: Python 制御フロー while 文の使い方 a = 0 while a in range(10): a += 1 if a < 3: continue elif a == 8: break print a カレントディレクトリに上の内容でexWhile.py というファイ ルを作ってimport してみましょう "val in シークエンス:" というフレーズはwhile だけでなくif, for など至る所で使えます continue, break も同じくif, for などでも使えます 15 / 20
  • 16. ALPS チュートリアル: Python 関数 関数 >>> def f(x, y): >>> ....z = x * y # 空白4 つのインデント! >>> ....for i in [1, 2, 3]: >>> .... z += i >>> ....return z >>> >>> f(2,3) 12 def 関数名(変数,...): で関数が定義できます Python ではインデント(ここの例では空白4 つ) によりスコー プを制御します 16 / 20
  • 17. ALPS チュートリアル: Python モジュール Python プログラムの階層構造 プログラムファイルのディレクトリ構成== 名前空間 モジュール 1 つの"hoge.py" ファイルが1 つのモジュール パッケージ ファイルの階層構造 pyalps/ alea.py dataset.py モジュールの階層構造 pyalps.alea.class.method pyalps.dataset.class.method 17 / 20
  • 18. ALPS チュートリアル: Python モジュール モジュールの読み込み >>> import fff as f # 別名をつけてインポート >>> f.ggg(x, y) ... >>> from fff import * # fff 以下のすべてをインポート >>> ggg(x, y) # 名前空間fff が外れる ... >>> from fff import ggg as g # ggg のみを指定してインポート >>> g(x, y) fff モジュール中のggg 関数を呼び出しています. 呼び出し方により名前空間の階層が変わっています. 18 / 20
  • 19. ALPS チュートリアル: Python ファイルの読み書き ファイルの読み書き ファイルから1行ごとにデータを読み込む方法 for line in open('dat.txt', 'r'): items = line.split('') print items[0], float(items[1]) 入力データ(dat.txt) a 3.432 b 1.42 c 2.159 open でdat.txt ファイルをreadonly で読み込む 読み込んだファイルを1 行毎に処理する.読み込まれた行は1 つのストリングとして扱われるので区切り文字(今の場合空 白)で分割している. 読み込んだストリングを浮動小数点にキャストしている. 上の例ではfor 文の終了とともにファイルは自動で閉じられる.し かし,一般的には f = open('dat.txt', 'r') として読み込んだ場合,ファイルを読 み終えたらf.close() で閉じなければならない. 19 / 20
  • 20. ALPS チュートリアル: Python 参考文献 参考文献 科学技術計算のためにpython を始めよう http://www.ike-dyn.ritsumei.ac.jp/~uchida/ scipy-lecture-notes/intro/index.html 初心者のはまりどころhttp://webtech-walker.com/ archive/2010/10/13191417.html Doug Hellmann さんhttp://doughellmann.com 標準モジュールなどの使い方が例とともに書いてあり分かりや すい 20 / 20