各種システム開発・WEBコンテンツ制作・WEBデザイン・ホームページ制作・インフラ設計・構築・レンタルサーバー・ソフトウェア技術者のアウトソーシング事業を行っております。

7 月
29

C言語開発からPython言語開発へ ~複数データの扱い~

技術スタッフ


前回、「PythonでWebアプリケーション開発」という表題で話をしました。
あれから2か月、今はWebアプリケーションから機械学習に分野を変えてPython開発の
準備をしています。
そして、分野が変わった機会にPythonの基本から習得していこうと思い、データの定義
から始めることにしました。
その中で、複数データをひとまとめにして扱えるデータがC言語に類似していたので、
これらのデータをC言語の定義と比較しながら説明したいと思います。

★リスト(list)

[…] で要素を並べます(例:color_l = [“red”, “green”, “blue”])。
これをC言語で書くと”color_l[3] = {“red”, “green”, “blue”};”となります。
C言語との違いは、要素を追加したり削除したり結合したりができます。
print(color_l + [“black”]) => [“red”, “green”, “blue”, “black”]と表示します。
C言語で書くと物理的に領域を確保するので、追加や結合する時は、新たに領域を
確保する必要があります。
あるいは、動的に確保する方法もありますが、Pythonと比べると面倒です。

 

★タプル(tuple)

(…) で要素を並べます(例:color_t = (“red”, “green”, “blue”))。
タプルはリストとほぼ同じように使えますが、要素を変更できない点が異なります。
ただし、list()でタプルからリストに、tuple()でリストからタプルに変換できるので、
その時のデータの扱い方に合わせることが可能です。
print(list(color_t)) => [“red”, “green”, “blue”]と表示します。
print(tuple(color_l)) => (“red”, “green”, “blue”)と表示します。
ちなみに、組み込みではデータをROM領域(読み込み専用)に割り当てることが
できるので、これがタプルに近いです。
ただし、読み込み専用となっているので変換はできません。

 

★辞書(dict)

{…}でキーと値のペアのリストを並べます
color_d = {“red”:0xFF0000, “green”:0x00FF00, “blue”:0x0000FF}。
こちらは、C言語の構造体に似ています。
struct {
unsigned int code;
} param2

struct {
param2 red;
param2 green;
param2 blue;
} param1
coler_d param1;
coler_d.red.code = 0xFF0000
coler_d.green.code = 0x00FF00,
coler_d.blue.code = 0x0000FF;
C言語だと複数行書かなければなりませんが、Pythonであれば1行で済みます。
また、辞書へのアクセスも「color_d[“blue”])」と簡潔です。
print(color_d[“blue”]) => 0xFFと表示します。
その他に、全ての要素や値を参照するitems()、keys()、valus()、iteritems()や
リスト関数(map(), filter(), reduce())が用意されています。

★集合(set)

波括弧({ })で囲んだ中に、要素をカンマ(,)で区切って指定して定義します
(例:color_s = {“red”, “blue”, “green”, “blue”}。
集合はリストやタプルのように値しか持ちませんが、順序も持ちません。
また、1つの集合内には同じ値が1つしか存在できないので、一意な値を管理する際に
非常に役立ちます。
print(color_s) => {“green”, “blue”, “red”}と表示します。
集合はC言語にはない型です。
ただし、プログラムを組み合わせれば、集合に似た処理をすることは可能です。

今回は、リスト・タプル・辞書・集合の概要を書きましたが、データへのアクセスや
データを取り扱うための多くの関数・メソッドが用意されているので、覚えることが
多い言語であり、その点で苦労しています。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

月別アーカイブ

カテゴリ