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件) を見るってことでオライ…

ディクショナリとLINQ

プログラミングC# 第6版 9.1.3 Dictionaryをクエリ式で処理します。以下実装例 using System; using System.Linq; using System.Collections.Generic; class Program { static void Main() { var hash = new Dictionary<string, int>(); hash["a"] = 1; hash["b"] = 2; ha</string,>…

ディクショナリ

C#

プログラミングC# 第6版 9.1 コレクションクラスのDictionaryの使い方です。任意のキーに対して任意の値を格納できる配列のようなデータを作れます。 using System; using System.Collections.Generic; class Program { static void Main() { var hash = new…

配列やListへ変換する

プログラミングC# 第6版 8.3.12 クエリ式で得られた結果を、時には配列へ変換したいこともあるでしょう。そういう場合にはToArrayを使います。 using System; using System.Linq; class Program { static void Main() { int[] nums = new int[] { 1,2,3,4,5,…

join句による連結

プログラミングC# 第6版 8.3.11 別のデータ同士を連結させることができす。join句はConcatのように全てを連結するのではなく、条件で指定したものだけを連結することができます。 using System; using System.Linq; class Foo { public int id; public strin…

集合演算子

プログラミングC# 第6版 8.3.10 Intersect演算子 配列同士の共通要素だけを返す using System; using System.Linq; class Program { static void Main() { int[] nums1 = new int[] {2,4,6,8}; int[] nums2 = new int[] {4,5,8,9}; var ret = nums1.Intersec…

値の重複チェックに便利なHashSet

C#

プログラミングC# 第6版 9.2 HashSetは値の重複がないコレクションです。例えばあるデータに対して処理を行うときに、重複してる値には処理をしたくないという処理を書く場合以下のようになります。 using System; using System.Collections.Generic; class …

group by句によるグループ化

プログラミングC# 第6版 8.3.4 データをグループごとにまとめます。以下実行例 using System; using System.Linq; class Foo { public int id; public string name; } class Program { static void Main() { Foo[] fooList = new Foo[] { new Foo() { id = 2…

Concat演算子による連結

プログラミングC# 第6版 8.3.3 データ同士を連結します。以下実行例 using System; using System.Linq; class Program { static void Main() { int[] nums1 = new int[] { 1,2,3 }; int[] nums2 = new int[] { 5,6,7 }; var ret = nums1.Concat(nums2); fore…

orderby句

プログラミングC# 第6版 8.3.2 ソートされたデータを返します。以下実行例 using System; using System.Linq; class Foo { public int id; public string name; } class Program { static void Main() { Foo[] fooList = new Foo[] { new Foo() { id = 5 , n…

OfTypeフィルタ演算子

プログラミングC# 第6版 8.3.1 OfTypeは指定した型のオブジェクトだけを抽出するフィルタです。以下実行例。 using System; using System.Linq; class Foo { public int fooId; } class Bar { public int barId; } class Program { static void Main() { obj…

LINQは遅延実行

プログラミングC# 第6版 8.2.3 クエリ式で得た値は、実際にforeach等でループするまではまだ実行されてない状態とのこと。というわけで動作確認。 using System; using System.Linq; using System.Collections.Generic; class Program { static IEnumerable<int> </int>…

let句

プログラミングC# 第6版 8.1.3 クエリ式の中で使用できる一時変数を定義するためのものです。まずはlet句を使わなかった場合の処理を見てみましょう。 using System; using System.Linq; // 数値チェッククラス class CheckNum { private int _num; public i…

LINQ演算子の独自実装

プログラミングC# 第6版 8.1.2 WhereやSelectを拡張メソッドに頼らずに独自に実装することでクエリ式として扱うことができます。 using System; using System.Linq; class Foo { public int id; public Foo Where (Func<Foo, bool> predicate) { return this; } public </foo,>…

初めてのLINQ

プログラミングC# 第6版 8.1 LINQです。クエリ式とも言うみたいです。一見すると何がなんだか良くわからない感じに見えますが、今までのC#の知識で十分読み解けそうです。ということでまずは一番シンプルなクエリ式の構文を見てみましょう。 using System; u…

反復処理の実装とyield文

C#

プログラミングC# 第6版 7.3.1.1 反復処理を独自に実装することが可能とのこと。これは説明が難しいので実装を見た方がわかりやすいかと思います。 using System; using System.Collections.Generic; class Program { static void Main() { foreach(int i in…