2017-02-01から1ヶ月間の記事一覧

引数をタプルとして受け取る

入門Python3 4.7.4 関数を定義する時に引数の前に*をつけると引数をタプル化して受け取れるようになります。 def foo(*args): print(args) foo() foo("a","b","c") $ py main.py () ('a', 'b', 'c')これはCの可変長引数のような、もしくはC#のparamsキーワー…

オプション引数とその注意点

入門Python3 4.7.3 def foo(a,b=10): print(a,b) foo(1,2) foo(1) # 引数の省略 $ py main.py 1 2 1 10この用に引数を省略することができます。C#等にもありますね。ただし一つ注意点があります。Pythonのオプション引数は関数の実行時ではなく定義時に定義…

キーワード引数

入門Python3 4.7.2 関数に引数を渡す時に、変数名を指定し任意の順番で引数を渡すことができます。 def foo(a,b,c): print(a,b,c) foo(1,2,3) # 通常の引数 foo(a=1,b=2,c=3) # キーワード引数 foo(b=2,a=1,c=3) # キーワード引数なら順番を変えても同じ結果…

何もしない関数の定義

def foo(): print(foo()) $ py main.py File "main.py", line 5 print(foo()) ^ IndentationError: expected an indented blockPythonは何もしない場合でも何か書かないと構文エラーになります。こういう場合return文を書いてもいいのですが、何もしない用の…

関数の基礎

入門Python3 4.6.3 defで関数を定義することが出来ます。 def foo(i): return 2 + i print(foo(100)) $ py main.py 102戻り値を返さない場合nullが返ります def foo(): print(1) print(foo()) $ py main.py 1 None

集合内包表記

入門Python3 4.6.3 リストや辞書と同じく集合にも内包表記がある。見た目が辞書内包表記と非常に似ているが、辞書は「キー:値」と書き、集合は「値」と書く。 ary = ["a","b","c"] result = {item for item in ary} print(result) $ py main.py {'c', 'b', '…

辞書内包表記

入門Python3 4.6.2 リストと同じく辞書にも内包表記がある。例えば以下のような、あるリストからそれをキーに、値を0で初期化した辞書を作るような処理があるとします。 keys = ["a","b","c"] result = {} for key in keys: result[key] = 0 print(result) $…

zip関数を使った複数シーケンスの結合処理

入門Python3 4.5.4 例えば二つのリストから一つの辞書を作成したい場合、以下のように処理を書く必要がありますが ary1 = ["a","b","c"] ary2 = [1,2,3] hash = {} for i in range(0,len(ary1)): hash[ary1[i]] = ary2[i] print(hash) $ py main.py {'a': 1,…

for文の基礎

入門Python3 4.5 Pythonのfor文はC言語でいうところのforではなく、C#でいうところのforeachとほぼ同義といったかんじになっています。そしてむしろC的なforは提供されてないみたいです。なのでもし似たようなことがしたい場合は以下のようにrange関数を使っ…

while文のelse節

入門Python3 4.4.3 PythonのwhileですがC#とかには無い機能があります。else節を書いておくとwhileが正常終了した場合に一度だけ処理されます。 i = 0 while i < 5: print(i) i += 1 else: print("end") $ py main.py 0 1 2 3 4 endbreakした場合にはelse節…

if文

入門Python3 4.3 x = 8 if x < 10: print(3) elif x < 5: print(2) else: print(1) $ py main.py 3「if 条件式:」のあとに改行後、インデントして処理を書くというかんじですね。インデントしなかった場合はエラーとなります。 x = 8 if x < 10: print(3) el…

Pythonの基本文法

入門Python3 4章 PythonはC等の波括弧を使った文法の制御ではなく、空白と改行で制御するとのこと。したがってC等の言語と違って好きなようにインデントをさせることができず、例えば以下のような処理があったとして str = "foo" + "bar" + "baz" print(str)…

集合の基礎

入門Python3 3.5 集合とは辞書のキーだけのようなもの、もしくは重複の無いリストのようなものである。でこの集合を使って何ができるかというと、集合同士で比較することができ、例えば一方に含むものや両方に含むものといったようなそういう比較を簡単に実…

リスト内包表記

入門Python3 4.6.1 これは便利ですね。内容としてはC#のLINQに似た機能です。例えば以下のような処理があるとします ary = [1,2,3,4,5] result = [] for i in ary: result.append(i + 1) print(result) $ py main.py [2, 3, 4, 5, 6]これは与えられたリスト…

辞書の基礎

入門Python3 3.4 任意のキーをインデックスとして指定できるリストみたいなかんじですね。C#でいうところのディクショナリですね。 空辞書の作成 hash = {} print(hash) $ py main.py {} 辞書の作成 hash = { "foo": 1, "bar": 2, "baz": 3 } print(hash["fo…

タプルの基礎

入門Python3 3.3 タプルとはイミュータブルなリストとのこと。なので基本的にはリストのような感じで扱えるが要素の追加や変更などはできない。 空タプルの生成 tuple関数(正確にはシーケンス型らしい)か()で生成できる。 ary1 = tuple() ary2 = () print(ar…

リストの基礎

入門Python3 3.2 空リストの生成 list関数(正確にはシーケンス型らしい)か[]で生成できる。 ary1 = list() ary2 = [] print(ary1) print(ary2) $ py main.py [] [] リストの生成 リストにはさまざまな要素を入れることができる。 ary1 = [1,2,3] ary2 = ['a'…

スライスの謎、stepに負の整数を指定した場合

入門Python3 2.3.7 前回の続きになります。stepにも負の整数を指定することができるとのことです。その場合、startからend範囲内の文字列の末尾から左へstep数分飛んだ文字列を取れるというかんじになる・・・・・・のだと思っていたのですが、どうやら挙動…

スライスまとめ

入門Python3 2.3.7 「[]演算子」を使って文字列をスライスすることができます。仕様がわりと複雑なのでひとつずつ確認していくことにします。 str[start:] startの位置から末尾までの文字列を返します str = 'FooBarBaz' result = str[3:] print(result) $ p…

print関数について

前回の記事で気になってはいたんですが、どうやらprint関数は自動で改行コードが挿入されるようです。 str1 = 'hello' str2 = "world" print(str1) print(str2) $ py main.py hello world改行を抑制するには以下のように書く必要があります。 str1 = 'hello'…

文字列の基礎

入門Python3 2.3 Pythonでは文字列はシングルクォートかダブルクォートで囲むことで定義できます。まぁこれはだいたいどの言語でも似たようなものですね。 str1 = 'hello' str2 = "world" print(str1) print(str2) $ py main.py hello world またクォートを3…

2進数8進数16進数の基数表記

入門Python3 2.2.3 各基数は0x等の接頭辞をつけることで数値リテラルとして表記することが出来ます。 print(10); # 10進数 print(0B10); # 2進数 print(0o10); # 8進数 print(0x10); # 16進数 $ py main.py 10 2 8 16また0始まりの数字は許可されておらずエ…

Pythonは多倍長整数

入門Python3 2.2.5 例えばC#ではintやlongといったように扱いたい整数の大きさによって型を適切に宣言する必要があるが、Pythonではintで扱える整数の範囲に制限がないとのこと。また多倍長整数と言って巨大な整数も扱うことができるようだ。 i = 10 ** 1000…

すべてがオブジェクトとして実装されている

入門Python3 2.1 Pythonでは整数や文字列、関数などすべてがオブジェクトとして実装されいてるとのこと。これはC#でもそうでしたね。またPythonはC++やC#のような静的型付け言語ではなく動的型付け言語であり変数の宣言時に型を定義しないので i = 7 print(i)…

お決まりのHelloWorld

入門Python3 1章 さてまずはインストールというところで当然のようにAnacondaと呼ばれるディストリビューションをインストールしようと思ったのだけど、どうやら最近のPython事情を見るにあまりそれ良くないよ的なことがちらほら目に入ってきてるので今回はP…

入門Python3

ちょっとひょんなことからPythonを学ぶことになりました。入門 Python 3作者: Bill Lubanovic,斎藤康毅,長尾高弘出版社/メーカー: オライリージャパン発売日: 2015/12/01メディア: 単行本(ソフトカバー)この商品を含むブログ (3件) を見るってことでオライ…