AIが当たり前になる時代。これからは、皆さんのPCにPython環境を整えておくと便利な場面が増えてきます。

今現在でも、Pythonを使って作られている具体的なプログラムやソフトウェアには、こんなにも沢山の有名な事例があります。
- YouTube
世界最大級の動画共有サービス。PythonはWebアプリやバックエンド処理に幅広く利用されています。 - Dropbox
オンラインストレージサービス。全てのプログラムがPythonで書かれていることで有名です。 - Instagram
写真・動画SNS。Python製WebフレームワークDjangoを利用して構築されています。 - Netflix
動画配信サービス。プラットフォーム開発やデータ分析、機械学習など多様な用途でPythonが使われています。 - Amazon
大手ECサイト。顧客データの分析やレコメンド機能などでPythonが活用されています。 - Spotify
音楽ストリーミングサービス。データ処理や分析、レコメンド機能でPythonが利用されています。 - Pinterest
画像共有SNS。PythonとDjangoで構築されています。 - BitTorrent
ファイル共有ソフト。Pythonで開発されたデスクトップアプリケーションの代表例です。 - Blender
3D制作ソフトウェア。内部のスクリプトやアドオンにPythonが使われています。 - Anki
暗記カードソフト。Pythonで作られたデスクトップアプリケーションです。 - 株やFXの自動売買ソフト
自動売買ソフトも多くはPythonで作られており、その中でさまざまなPythonモジュール(例:requests、ccxt、tradingview-taなど)が利用されています。 - DJIドローン制御ソフトウェア
ドローンの制御やアプリケーションにPythonが使われています。 - Xiaomi MIUI
Android向けカスタムOSの開発にもPythonが活用されています。 - Pepper
ソフトバンクのロボット「Pepper」の制御にもPythonが使われています。
このほかにも、Pythonはスマートホーム・IoT、Raspberry Piを使ったロボット制御、ゲーム、データ分析ツールなど、さまざまなプログラムやアプリケーションで活用されています。
初心者から一歩ステップアップするためにも、環境構築のスキルを身につけておくと役立ちます。

まずは、全てを覚えようとするのではなく
じょじょに「慣れることだけ」を目的とすると良いと思います。
途中でつまずくことがあるかもしれませんが、ぜひチャレンジしてみてください。継続は力なりです(つきなみ)
それでは、WindowsにPython環境を構築する手順を始めましょう!
Pythonのインストール

公式サイトからPythonをインストールします。
※Stable Deffusionをお使いの方は、動作が保証されている「Python 3.10.6」をインストールしてください。
Pythonがインストールされているか確認する方法
コマンドラインインターフェースにアクセスすることで、Pythonがきちんとインストールされているか確認できます。
Pythonがインストールされているか確認する簡単な方法は以下の通りです。
Windowsの場合
①「スタート」メニューから「コマンドプロンプト」または「PowerShell」を開く。
Windows PowerShellの起動方法
Windows PowerShellを起動する方法はいくつかあります。以下に、具体的な手順を示します。
1. スタートメニューから起動
- 手順:
- スタートボタンをクリックするか、Windowsキーを押します。
- 検索バーに「PowerShell」と入力します。
- 「Windows PowerShell」をクリックして起動します。
2. ファイル名を指定して実行から起動
- 手順:
- Windowsキー + Rを押して「ファイル名を指定して実行」ダイアログを開きます。
- 入力欄に「powershell」と入力し、Enterキーを押すか「OK」をクリックします。
3. コマンドプロンプトから起動
- 手順:
- コマンドプロンプトを開きます(Windowsキー + Rで「cmd」と入力)。
- コマンドプロンプトで「powershell」と入力し、Enterキーを押します。
4. エクスプローラーから起動
- 手順:
- エクスプローラーを開きます。
- 任意のフォルダ内でShiftキーを押しながら右クリックします。
- 「PowerShellウィンドウをここに開く」を選択します。
5. 管理者として起動
- 手順:
- スタートメニューから「Windows PowerShell」を右クリックし、「管理者として実行」を選択します。
これらの方法で、Windows PowerShellを簡単に起動することができます。必要に応じて、管理者権限での実行も可能です。
② 次に、以下の文字を入力して、インストール完了したPythonのバージョンをチェックしてみましょう。
PS C:\Users\ユーザー名>
の後ろに以下をコピーもしくは、入力してEnterキーを押す。
python -V
※以下のようなメッセージが出ますが「強制的に貼り付け」で問題ありません。

正しくインストールされていれば、以下のように表示されます。表示されなければインストールされていません。
PS C:\Users\ユーザー名> python -V Python 3.10.6
Mac/Linuxの場合
Mac/Linuxの場合は、ターミナル(Terminal)アプリケーションを使用します。ターミナルはMacのコマンドラインインターフェースで、以下の方法で起動できます。
ターミナルはMacOSのUnix系コマンドを実行するためのアプリケーションで、WindowsのコマンドプロンプトやPowerShellに相当する機能を提供します。
- Finderを開き、「アプリケーション」フォルダ内の「ユーティリティ」フォルダを探します。その中にターミナルアプリがあります。
- または、Command + Spaceキーを押してSpotlight検索を開き、「ターミナル」と入力して起動することもできます。
- さらに、Launchpadからターミナルアイコンをクリックして起動することも可能です。
ターミナルが起動できたら、以下のコマンドを入力しEnterキーを押してください。
python --version
正しくインストールされていれば、以下のように表示されます。
> clang: error: no input files
インストールされていればバージョンが表示されます。表示されなければインストールされていません。
もしも、コマンドライン・デベロッパ・ツールが必要ですのメッセージが出たら、インストールを実行してください。

Homebrewをインストール
次に、Homebrewをインストールします。こちらを入力してインストールされているか確認できます。
brew --version
もし、こちらのようにバージョンが表示されたらインストール済みになります。
> Homebrew 4.3.1
インストールされていない場合は、Homebrew公式サイトからコードをコピーしてきてターミナルに貼り付けてインストールしてください。


コマンドライン・デベロッパ・ツールとHomebrewがインストールできたら、以下をコマンドに入力してPythonをインストールします。
brew install python3
インストールできたらこちらをコピーもしくは、入力してみてバージョンがでてきたらOKです。
python3 -V
こちらを、コマンドに入力してシンボリックリンクも作成しておいてください。
ln -s /usr/bin/python3 /usr/local/bin/python
今度は、Pythonのあとの3を付けずに入力して、先程のバージョンと同じものか確認します。
python -V
動作確認(任意)
Pythonが起動できるか試すには、コマンドラインで
textpython
(Mac/Linuxはpython3
)
と入力し、>>>
のプロンプトが表示されたら、
pythonprint("hello")
と入力し、hello
と表示されれば正常に動作しています。
終了するには
pythonexit()
と入力してください。
この方法でPythonのインストール有無とバージョンを簡単に確認できます。
Pythonでよく使われるエディターを設定
この2つのエディターがポピュラーなものですが、Python特化のPyCharmではなく、汎用性のあるVSCodeがおすすめです。
VSCodeのインストーラー:https://code.visualstudio.com/download
PyCharmのインストーラー:https://www.jetbrains.com/pycharm/download/?section=windows
VSCodeでPythonのエディターとして使やすいようにする設定方法
最低限の拡張機能として以下の2点をインストールしておきます。ブロック状のアイコンをクリックして拡張機能を検索欄から探します。
日本語化の拡張機能のインストール

※ インストール後はVS Codeを再起動しましょう
次にPythonの拡張機能をインストールします。

※ インストール後はVS Codeを再起動しましょう
これで、コードサポートなどの機能が使えるようになりコーディングが楽になります。
Pythonのコードを書くファイルを作成
一番上のフォルダアイコンから、フォルダーを開くをクリックしてPythonファイルをつくりたいフォルダを選択します。
拡張子が.pyのファイルを新規作成して何かしらのPythonのコードを書いたファイル(Pythonスクリプト)をつくりセーブ(Ctrl+S)します。

Pythonスクリプトの実行方法
Winの場合はPowershellから、Macの場合はコマンドラインから実行できます。
VSCode内でターミナルを表示させることができます。

pwdと入力すると今どのフォルダで作業しているかを調べることができます。
pwd
lsと打つと、フォルダ内のファイル・ディレクトリ内容を表示させることができます。
ls
Pythonスクリプトを指定して実行するときは、以下のコマンドでできます。
python

先ほど「Pythonのコードを書くファイルを作成」で作成したスクリプトが実行(表示)できました。
インタープリター
Pythonを動かすためのプログラムを「インタープリター」といいます。Pythonをインストールしていれば、すでにインストールされています。
右下の「Pythonバージョンをクリックすると、インタープリターのパス入力を表示することができます。


ここで、インストールしたPythonをクリック→右上の再生ボタンをクリックすることで、スクリプトを実行することができます。

Pythonの基本的な文法ルール
上から順番に命令が実行される

命令の終わりは改行で

※ コードの途中で改行したい場合は、このように()で括ります。

大文字と小文字は区別される(ex: 関数には小文字と決まりがあるため大文字にするとエラーになります)
また、スクリプトはすべて半角英数字になります。

# のあとには、コメント(プログラムでは実行されないメモ書き)を入れることができる

変数
※ 変数の名前は出来るだけどんなデータが入っているの分かりやすい名称にしましょう
- 変数名は全て小文字
- 単語同士はアンダーバーでつなげられる
変数とは、値を入れておける箱のようなものです。もしくは、データを格納するフォルダのようなものです。
bitcoin_price = 100000
このように、左側の変数に右側の値を入れる操作を代入と言います。
また、この変数の値は後から変更することができます。
bitcoin_price = 100000 bitcoin_price = 200000
このような変更の仕方もできます。
x = 10 y = 1000 x = y
この場合 x の値は y の 値の 1000 に置き換わりました。


型
- 文字列型の場合は、シングルクォート ‘ かダブルクォート ” で囲む
型とはデータの種類になります。
データの種類には以下のようなものがあります。
- 整数型(int)
- 浮動小数点型(float)
- 文字列型 (string)
Pythonでは、変数の型は値が代入されたタイミングで自動で決まります。
+を使った場合の違い
この型によってできることが違い、同じ命令でも方によって動作が違います。
整数型

単純に足し算がされます。

文字列型

文字列結合がされます。

型を調べる方法
プログラミングをしていると、変数の型を調べたい時が出てきます。その時はtypeをつかうことで確認できます。


このように class のあとに型の名前が表示されます。
型を変換する方法
型変換とは、データの種類(型)を別の種類に変えることです。例えば、数字を文字列に変えたり、文字列を数字に変えたりすることができます。
※数値に変換できない文字などはエラーになります。
型変換は、異なる種類のデータを組み合わせて使いたいときに便利です。プログラミングでは、正しい型を使うことが大切なので、型変換をマスターしましょう。
主な型変換の方法
- 文字列から数字への変換:
- 整数に変換:
int()
関数を使います - 小数に変換:
float()
関数を使います
例:
text = "123"
number = int(text)
print(number)
# 結果: 123
- 数字から文字列への変換:
str()
関数を使います
例:
price = 150
message = "りんごの価格は" + str(price) + "円です"
print(message)
# 結果: りんごの価格は150円です
型変換の注意点
- 変換できない場合はエラーが出ます。例えば、文字列”abc”を数字に変換しようとするとエラーになります。
- 型変換をする前に、
type()
関数を使って現在の型を確認するのが良いでしょう。
例:
text = "456"
print(type(text))
# 結果: <class 'str'>
number = int(text)
print(type(number))
# 結果: <class 'int'>
数値演算
- ()を付けて計算の優先順位を付けることができる。
- 変数を使っても計算可能
- 0で割るとerrorがでる(↓)

Pythonの数値演算は、普段使っている数学の計算とよく似ています。基本的な四則演算から、べき乗や余りの計算まで、様々な計算ができるので、ぜひ試してみてください。
基本的な四則演算
Pythonでは、普段使っている計算と同じように数値の計算ができます。
足し算(加算)
足し算は +
記号を使います。
print(5 + 3) # 結果: 8
引き算(減算)
引き算は -
記号を使います。
print(10 - 4)
# 結果: 6
掛け算(乗算)
掛け算は *
記号を使います。
print(6 * 2)
# 結果: 12
割り算(除算)
割り算は /
記号を使います。
print(15 / 3)
# 結果: 5.0
割り算の結果は、小数点以下も表示されます。
特殊な演算
整数の割り算(切り捨て除算)
//
を使うと、小数点以下を切り捨てた整数の結果が得られます。
print(7 // 2)
# 結果: 3
余りを求める
%
を使うと、割り算の余りを求められます。
print(7 % 3) # 結果: 1
べき乗(累乗)
**
を使うと、べき乗の計算ができます。
print(2 ** 3) # 2の3乗、
結果: 8
計算の順序
計算の順序は、普段の数学と同じです。かっこ ()
を使って計算の順序を指定できます。
print(2 + 3 * 4)
# 結果: 14
print((2 + 3) * 4)
# 結果: 20
変数を使った計算
計算結果を変数に保存したり、変数を使って計算したりできます。変数は左に記入します。
例えば4教科の平均点を求める場合は、以下のようになります。
math = 80
physics = 95
science = 89
english = 75
avg_score = ( math + physics + science + english) / 4
print(avg_score)
# 結果: 84.75
文字列
- シングルコーテーションもしくは、ダブルコーテーションでくくる
- +で文字列を結合することができる
文字列は、プログラミングで最もよく使われるデータ型の一つです。テキストを扱う際に、とても便利な型なので、しっかり理解しておきましょう!
文字列とは
文字列は、文字や数字、記号などを並べたテキストのことです。Pythonでは、文字列は str
(ストリング)と呼ばれる特別な型で表現されます。
文字列の作り方
文字列は、引用符("
または '
)で囲むことで作れます。
name = "たろう"
message = 'こんにちは'
文字列でできること
1. 文字列の結合
+
を使って、文字列をつなげることができます。
greeting = "こんにちは"
name = "たろう"
message = greeting + "、" + name + "さん"
print(message)
# 結果: こんにちは、たろうさん
2. 文字列の繰り返し
*
を使って、文字列を繰り返せます。
word = "Python"
repeat = word * 3
print(repeat)
# 結果: PythonPythonPython
3. 文字列の一部を取り出す
角括弧 []
を使って、文字列の一部を取り出せます。
text = "Hello, World!"
first_char = text[0] # 最初の文字
last_char = text[-1] # 最後の文字
print(first_char) # 結果: H
print(last_char) # 結果: !
4. 文字列の長さを調べる
len()
関数で、文字列の長さを知ることができます。
message = "こんにちは"
length = len(message)
print(length) # 結果: 5
便利なメソッド
文字列には、便利な操作方法(メソッド)がたくさんあります。
upper()
: 大文字に変換lower()
: 小文字に変換strip()
: 前後の空白を削除
text = " Hello "
print(text.upper())
# 結果: " HELLO "
print(text.strip())
# 結果: "Hello"
f-string (変数埋込み)
price = 1000 text = f"この商品は{price}円です" print(text) #結果 この商品は1000円です
Pythonのf-string(フォーマット済み文字列リテラル)は、文字列に変数や式を簡単に埋め込むためのPython3.6以降で使えるようになった便利な機能です。
f-stringを使うと、文字列に変数や式を簡単に埋め込むことができ、コードが読みやすくなります。特に、複雑な文字列を作る際に便利です。
f-stringの基本
f-stringを使うには、文字列の前に f
または F
をつけます。変数や式を埋め込みたい部分を {}
で囲みます。
name = "たろう"
age = 13
print(f"私の名前は{name}で、{age}歳です。")
# 結果: 私の名前はたろうで、13歳です。
f-stringの便利な使い方
1. 文字を組み合わせ
f-string内で直接文字を組み合わせることができます。
surname = "田中"
given_name = たろう"
full_name = surname + given_name
print(full_name)
# 結果: 田中たろう
2. 計算結果の埋め込み
f-string内で直接計算ができます。
x = 5
y = 3
print(f"{x} + {y} = {x + y}")
# 結果: 5 + 3 = 8
3. メソッドの呼び出し
文字列のメソッドなども使えます。
text = "hello"
print(f"大文字にすると: {text.upper()}")
# 結果: 大文字にすると: HELLO
4. 小数点の桁数指定
小数点以下の桁数を指定できます。
pi = 3.14159
print(f"円周率は{pi:.2f}です")
# 結果: 円周率は3.14です
5. 文字列の整形
文字列の幅を指定したり、左右中央揃えができます。
name = "たろう"
print(f"|{name:>10}|") # 右揃え
print(f"|{name:<10}|") # 左揃え
print(f"|{name:^10}|") # 中央揃え
# 結果:
# | たろう|
# |たろう |
# | たろう |
リスト
Pythonのリストには多くのメリットがあります。
柔軟性
- 複数の値をバラバラに扱うと管理が大変ですが、異なるデータ型(整数、文字列、ブール値など)を同じリストに格納できるため、データ構造が非常に柔軟です。
処理を一気に行える
- 例えば、生徒の名前リストがあってそれぞれに+さんを付けたいと思ったとき、一つ一つではなく、カタマリとしてまとめて処理することができます。
可変性
- リストはサイズが動的に変更可能で、実行時に後から要素の追加や削除が容易です。
豊富な操作メソッド
- 要素の追加、削除、検索、並べ替えなど、さまざまな操作を行うためのメソッドが豊富に用意されています。
インデックスによるアクセス
- インデックスを使用して要素に簡単にアクセスできるため、データの操作が直感的です。
コードの可読性向上
- リストを使用することで、データを論理的にグループ化し、処理の流れを明確にすることができるため、コードの可読性や保守性が向上します。
リスト内包表記
- リスト内包表記を利用することで、簡潔かつ効率的に新しいリストを生成できます。
これらの特徴から、Pythonのリストはデータ処理やプログラミング全般で非常に便利で重要なデータ構造となっています。
例えば、組み込み関数を使って、平均点を算出するとこんなにシンプルなスクリプトになります。
scores = [80, 95, 89, 75]
avg_score = sum(scores) / len(scores)
print(avg_score)
# 結果: 84.75
※ このリストを使って、それぞれの科目の点数の差だったり、一番点数の高い科目を表示させたい場合、辞書を使って取得することができます。
リストの基本的なルールは以下の通りです。
- []各括弧でくくる
- カンマ区切りで1つ1つの値を設定
- 順番の情報を持っている(インデックス)
リストとは
リストは、複数の値をまとめて保存できる便利な機能です。例えば、友達の名前や好きな食べ物のリストを作ることができます。
リストは、Pythonプログラミングでとても便利な機能です。複数の値をまとめて扱えるので、データの整理や処理に役立ちます。
リストの作り方
リストは、角括弧 []
の中に、カンマ ,
で区切って値を並べて作ります。
fruits = ['りんご', 'バナナ', 'オレンジ']
numbers = [1, 2, 3, 4, 5]
リストの使い方
1. リストの要素を取り出す
リストの中の特定の要素を取り出すには、インデックス(位置)を指定します。
リスト[インデックス番号]
インデックスは0から始まります。
fruits = ['りんご', 'バナナ', 'オレンジ']
print(fruits[0])
# 結果: りんご
print(fruits[1])
# 結果: バナナ
また、負の要素を使うことで後ろから取得することもできます。後ろから-1の場合は、一番後ろの要素を取り出すことができます。
fruits = ['りんご', 'バナナ', 'オレンジ']
print(fruits[-1])
# 結果: オレンジ
print(fruits[-2])
# 結果: バナナ
2. リストの要素を順番に表示する
for文を使って、リストの要素を順番に表示できます。
fruits = ['りんご', 'バナナ', 'オレンジ']
for fruit in fruits:
print(fruit)
3. リストの長さを調べる
len()
関数を使って、リストの要素数を調べられます。
fruits = ['りんご', 'バナナ', 'オレンジ']
print(len(fruits))
# 結果: 3
x = ['a', 'b', 'd', 'e', 'f', 'g', 'h', 'i']
y = len(x)
print(y)
# 結果: 8
4. リストに要素を追加する
Pythonのリストから要素を追加する方法には、いくつかの方法があります。主な方法を解説します。
新しいリストが作られるのではなく、リスト自体が変更されるので注意してください。
1. append()メソッド
append()
メソッドを使って、リストの最後に新しい要素を追加できます。
fruits = ['りんご', 'バナナ']
fruits.append('オレンジ')
print(fruits)
# 結果: ['りんご', 'バナナ', 'オレンジ']
my_list = [1, 2, 3]
my_list.append(4)
- extend()メソッド
リストの末尾に別のリストの全要素を追加します。
my_list = [1, 2, 3]
my_list.extend([4, 5, 6])
- insert()メソッド
指定した位置に要素を挿入します。
my_list = [1, 2, 3]
my_list.insert(1, 4)
- + 演算子による結合
2つのリストを結合して新しいリストを作成します。
my_list = [1, 2, 3]
new_list = my_list + [4, 5]
- リスト内包表記
既存のリストから新しい要素を生成して追加します。 - *= 演算子
リストを指定回数繰り返して要素を追加します。
これらの方法は、用途や状況に応じて適切なものを選択することが重要です。
5. リストの要素を削除する
Pythonのリストから要素を削除する方法にも、いくつかの方法があります。主な方法を解説します。この場合も、新しいリストが作られるのではなく、リスト自体が変更されるので注意してください。
1. remove()メソッド
特定の値を持つ要素を削除します。
fruits = ['りんご', 'バナナ', 'オレンジ']
fruits.remove('バナナ')
print(fruits)
# 結果: ['りんご', 'オレンジ']
remove()は最初に見つかった要素のみを削除します。
2. pop()メソッド
指定したインデックスの要素を削除し、その要素を返します。
fruits = ['りんご', 'バナナ', 'オレンジ']
removed = fruits.pop(1)
print(removed) # 'バナナ'
print(fruits) # ['りんご', 'オレンジ']
インデックスを指定しない場合、最後の要素が削除されます[2]。
3. del文
特定のインデックスの要素を削除します。
fruits = ['りんご', 'バナナ', 'オレンジ']
del fruits[1]
print(fruits) # ['りんご', 'オレンジ']
4. スライシングを使った削除
複数の要素を一度に削除できます。
fruits = ['りんご', 'バナナ', 'オレンジ', 'ぶどう', 'メロン']
del fruits[1:4]
print(fruits) # ['りんご', 'メロン']
5. clear()メソッド
リストの全ての要素を削除します。
fruits = ['りんご', 'バナナ', 'オレンジ']
fruits.clear()
print(fruits) # []
これらの方法を使い分けることで、様々な状況でリストから要素を効果的に削除することができます。
インデックスを指定してリストを分割(スライシング)
リストのインデックスを指定して分割する方法について説明します。これは「スライシング」と呼ばれる技術です。
スライシングを使うと、リストの一部を簡単に取り出したり、新しいリストを作成したりできます。これは、データの処理や分析に非常に便利な機能です。
スライシングの基本
スライシングを使うと、リストの一部を取り出すことができます。基本的な構文は以下の通りです。
リスト[開始インデックス:終了インデックス]
- 開始インデックス:取り出し始める位置(この要素を含む)
- 終了インデックス:取り出しを終える位置(この要素は含まない)
例えば:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5])
# 結果: [2, 3, 4]
要素と要素の間に分割用の番号があると考えると分かりやすいです。

スライシングの応用
- 開始インデックスを省略すると、リストの先頭から取り出します。
print(numbers[:5])
# 結果: [0, 1, 2, 3, 4]
- 終了インデックスを省略すると、リストの最後まで取り出します。
print(numbers[7:])
# 結果: [7, 8, 9]
- 負のインデックスを使うと、リストの後ろから数えます。
print(numbers[-3:])
# 結果: [7, 8, 9]
- ステップ(間隔)を指定することもできます。
print(numbers[::2])
# 結果: [0, 2, 4, 6, 8]
Pythonにおける空のリストの作成とリストの結合について説明します。
空のリストの作成
空のリストを作成するには、主に2つの方法があります。
- 角括弧を使用する方法
empty_list = []
list()
関数を使用する方法
empty_list = list()
両方の方法で同じ結果が得られますが、角括弧 []
の方がより簡潔で一般的に使用されています。
リストの結合
リストの結合方法は、用途や状況に応じて適切なものを選択することが重要です。
リストを結合するには、いくつかの方法があります。
+
演算子を使用する
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
+でリストを結合した場合は、新しいリストが作られます。
extend()
メソッドを使用する
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
itertools.chain()
を使用する
import itertools
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list(itertools.chain(list1, list2))
- リスト内包表記を使用する
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [item for sublist in [list1, list2] for item in sublist]
これらの方法の中で、+
演算子を使用する方法が最も直感的で簡単です。ただし、大量のリストを結合する場合は、itertools.chain()
がメモリ効率が良いため推奨されます。
便利な組み込み関数
Pythonの便利な組み込み関数
max()
と min()
関数を使用することで、リストの最大値と最小値を簡単かつ効率的に取得できます。
- 最大値や最小値が複数ある場合、
max()
とmin()
は最初に見つかった値を返します。 - これらの関数は、リストが空の場合にはエラーを発生させるので注意が必要です。
一番大きい値を取得
max()
関数を使用して、リストの中で最大の値を取得できます。
my_list = [1, 5, 3, 9, 2, 7]
max_value = max(my_list)
print(max_value)
# 結果: 9
一番小さい値を取得
min()
関数を使用して、リストの中で最小の値を取得できます。
my_list = [1, 5, 3, 9, 2, 7]
min_value = min(my_list)
print(min_value)
# 結果: 1
これらの関数は非常に便利で、数値だけでなく文字列のリストにも使用できます。
合計を取得
リストの合計を取得するには、sum()
関数を使用します。
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total)
# 結果: 15
sum()
関数は、リスト内の全ての要素を合計します[1][3]。
小さい順に並び替えたリストを取得
リストを小さい順(昇順)に並び替えるには、sorted()
関数を使用します。
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
# 結果: [1, 1, 2, 3, 4, 5, 9]
sorted()
関数は、元のリストを変更せずに新しいソートされたリストを返します。
大きい順に並び替えたリストを取得
Pythonでリストを大きい順(降順)に並び替える方法について説明します。主に2つの方法があります:sort()
メソッドと sorted()
関数です。
これらの方法を使うことで、Pythonで簡単にリストを大きい順に並び替えることができます。
sort()
メソッドはリスト自体を変更するため、元の順序が必要な場合はsorted()
を使用することが推奨されます。- 並び替えの際には、リストが空でないことを確認してください。空のリストに対してこれらのメソッドを使用すると、エラーは発生しませんが、結果も空のままになります。
1. sorted() 関数
sorted()
関数は元のリストを変更せずに、新しいリストを返します。reverse=True
引数を指定することで降順にできます。
例:
numbers = [5, 3, 9, 1, 4]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
# 結果: [9, 5, 4, 3, 1]
print(numbers)
# 結果: 元のリストは変更されない: [5, 3, 9, 1, 4]
2. sort() メソッド
sort()
メソッドは、リストオブジェクトを直接変更して、要素を降順に並び替えます。こちらも reverse=True
引数を使って降順に並び替えます。
例:
numbers = [5, 3, 9, 1, 4]
numbers.sort(reverse=True)
print(numbers)
# 結果: [9, 5, 4, 3, 1]
sort()
メソッドは、リスト自体を並び替えたい場合にも使用できます。
辞書
- 同じ key の要素を複数持つとはできない(被っている場合、後に書いた方が残る)
辞書は、キー(key)と値(value)をペアを保存できるPythonのデータ型です。
実際の辞書と同じように、単語(キー)を調べると、その意味(値)が分かるようなものです。
辞書のメリット
- 検索が速い:キーを使って直接値にアクセスできるので、リストより速く検索できます。
- 分かりやすい:データに名前(キー)をつけられるので、意味が分かりやすくなります。
- 柔軟性:キーと値に様々な型のデータを使えます。
辞書は、データを整理して保存したいときに便利です。「リスト」だと値だけが羅列されていてどれがどの値なのかを表すことができませんが、辞書ではそれらをセットで設定しておくことができます。
リストの場合
price = [300, 5000, 980]
例えば、友達の名前と電話番号を保存したり、商品名と価格を管理したりするのに使えます。
キーの場合
price = {"ジュース": 300,
"チケット": 5000,
"おやつ": 980,}
辞書の作り方
辞書は波括弧 {}
を使って作ります。キーと値はコロン :
で区切り、複数のペアはカンマ ,
で区切ります。
fruits = {'りんご': 100, 'バナナ': 200, 'オレンジ': 150}
この例では、果物の名前がキーで、その価格が値になっています。
空の辞書
空の辞書は以下のように表すことができます。
x = {}
x = dict{}
辞書の使い方
値を取り出す
キーを使って、対応する値を取り出せます。
price = fruits[key]
print(price)
辞書の作り方の例の場合に当てはめるとこうなります。
price = fruits['りんご']
print(price) # 100
または、以下のようにも指示することができます。
price = 辞書.get(key)
print(price)
新しい要素を追加する
新しいキーと値のペアを追加できます。
辞書[key] = value
辞書の作り方の例の場合に当てはめるとこうなります。
fruits['ぶどう'] = 300
print(price)
# 出力結果
{'りんご': 100, 'バナナ': 200, 'オレンジ': 150, 'ぶどう': 300}
値を変更する
既存のキーに新しい値を代入すると、値が更新されます。
辞書[key] = 新しい値
fruits['バナナ'] = 180
# 出力結果
{'りんご': 100, 'バナナ': 180, 'オレンジ': 150, 'ぶどう': 300}
要素を削除する
del
を使って要素を削除できます。
del fruits['オレンジ']
辞書の要素数を取得する方法と、keyの値だけを取得する方法について簡潔に説明します。
辞書の要素数を取得する方法
len()関数を使用して辞書の要素数を取得できます。
len(辞書)
例
my_dict = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
element_count = len(my_dict)
print(element_count) # 3
keyの値だけを取得する方法
list()関数と辞書のkeys()メソッドを組み合わせて、keyの値だけをリストとして取得できます。
辞書.keys()
リストとして取得する
これで取得したキーは、dict_keysという型で、これをリストに型変換するには以下のようにlist()でくくることで行えます。
この方法を使うと、通常のリストとして値を扱うことができます。
x = list(辞書.keys())
例
my_dict = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
keys_list = list(my_dict.keys())
print(keys_list) # ['key1', 'key2', 'key3']
これらの方法を使用することで、辞書の要素数やkeyの値を簡単に取得できます。
辞書からvalueの値だけを取り出す方法
辞書のvalues()
メソッドを使うと、すべての値を取得できます。
辞書.values()
例
my_dict = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
values = my_dict.values()
print(values) # dict_values(['val1', 'val2', 'val3'])
values()
メソッドはdict_values
オブジェクトを返します。これは反復可能なオブジェクトで、for文で各値を取り出すことができます。
for value in my_dict.values():
print(value)
values()
メソッドは辞書の現在の状態を反映するビューオブジェクトを返すため、辞書が変更されると自動的に更新されます。一方、リストに変換すると、その時点での値のスナップショットが得られます。
タプルと集合
タプルと集合は、それぞれの特徴を活かして使い分けることで、プログラムをより効率的に書くことができます。
Pythonの集合とタプルについて、分かりやすく解説します。
タプル
丸括弧 () で囲んで作る
- 値を変更できない
- 順序がある
- 同じ値をもてる
タプルは、複数の値をまとめて保存できるデータ型です。以下の特徴があります。
- 複数の値を一つにまとめたもの
- 一度作ると、中身を変更できません
- 順序が決まっています
例:
fruits = ('りんご', 'バナナ', 'オレンジ')
タプルは変更できないので、大切なデータを間違って変更してしまうのを防ぐのに便利です。
初心者のうちでも、知らず知らずのうちに扱っていることがよくあります。
タプルへのアクセス方法
タプルは順序を持つイミュータブル(変更不可)なデータ構造であり、インデックスを使って個別の要素にアクセスしたり、スライシングで複数の要素を取り出したりすることができます。
図で表すと以下のようになります。
タプル: ('apple', 'banana', 'cherry', 'date', 'elderberry')
インデックス: 0 1 2 3 4
負のインデックス: -5 -4 -3 -2 -1
これらの操作はリストと同様ですが、タプルの要素を変更することはできません。
インデックスによるアクセス
正のインデックス:
- 最初の要素は0から始まります
- 例:
mytuple
で最初の要素、mytuple[1]
で2番目の要素にアクセスできます
mytuple
→ ‘apple’mytuple[2]
→ ‘cherry’
負のインデックス:
mytuple[-1]
→ ‘elderberry’mytuple[-3]
→ ‘cherry’
- 最後の要素は-1から始まります
- 例:
mytuple[-1]
で最後の要素、mytuple[-2]
で後ろから2番目の要素にアクセスできます
Pythonのタプルへのアクセス方法を、プログラミングの例で表すと次のようになります。
my_tuple = ('apple', 'banana', 'cherry', 'date', 'elderberry')
# 正のインデックス
print(my_tuple[0]) # 'apple'
print(my_tuple[2]) # 'cherry'
# 負のインデックス
print(my_tuple[-1]) # 'elderberry'
print(my_tuple[-3]) # 'cherry'
スライシングによるアクセス
- 範囲を指定して複数の要素にアクセスできます
- 例:
mytuple[1:4]
でインデックス1から3までの要素を取得できます
mytuple[1:4] → ('banana', 'cherry', 'date')
mytuple[:3] → ('apple', 'banana', 'cherry')
mytuple[2:] → ('cherry', 'date', 'elderberry')
Pythonのタプルへのアクセス方法を、プログラミングの例で表します。
my_tuple = ('apple', 'banana', 'cherry', 'date', 'elderberry')
# 範囲指定
print(my_tuple[1:4]) # ('banana', 'cherry', 'date')
# 開始インデックスの省略
print(my_tuple[:3]) # ('apple', 'banana', 'cherry')
# 終了インデックスの省略
print(my_tuple[2:]) # ('cherry', 'date', 'elderberry')
# ステップの指定
print(my_tuple[::2]) # ('apple', 'cherry', 'elderberry')
これらの例は、タプルの要素にインデックスやスライシングを使ってアクセスする方法を示しています。タプルはイミュータブル(変更不可)なので、これらの操作は新しいタプルを返すか、既存のタプルの要素を参照するだけです。
タプルが使われる具体的なケース
タプルが使われる具体的なケースについて、中学生にも分かりやすく説明します。
- 変更されない情報の保存:
例えば、生徒の基本情報を保存する場合です。
student = ('山田太郎', 14, '2年3組')
名前、年齢、クラスは簡単に変わらないので、タプルで保存すると安全です。
- 複数の値を一度に返す:
関数から複数の情報を返したい時に便利です。
def get_test_scores():
return (85, 90, 78) # 国語、数学、英語の点数
- 座標の表現:
地図や3Dデータなどの、2次元や3次元の座標を表すのに適しています。
point = (3, 4) # x座標が3、y座標が4の点
- 辞書のキーとして:
タプルは変更できないので、辞書のキーとして使えます。
scores = {('山田太郎', '数学'): 85, ('山田太郎', '国語'): 90}
- データの整理:
関連する情報をまとめて扱いたい時に便利です。
books = [('ハリーポッター', 'J.K.ローリング'), ('鬼滅の刃', '吾峠呼世晴')]
タプルは、一度作ったら中身を変更できない特徴があるので、間違って大切なデータを変更してしまうのを防ぐのに役立ちます。また、リストよりもメモリの使用量が少なく、プログラムの実行速度が速くなる場合があります。
注意点
- タプルはイミュータブル(変更不可)なので、インデックスを使って要素にアクセスすることはできますが、要素の値を変更することはできません
- for文を使用して、タプル内のすべての要素に順番にアクセスすることも可能です
タプルの順序付けられた性質により、インデックスを使用して効率的に要素にアクセスできるため、データの保存や取り出しに便利です。
集合
波括弧 {} で囲んで作る
- 順序がない
- 同じ値を持てない
集合は、重複のない要素をまとめて保存するデータ型です。以下の特徴があります。
- 複数の値を一つにまとめたもの
- 重複する要素は自動的に1つだけになります
- 順序は決まっていません
例:
colors = {'赤', '青', '緑', '赤'}
print(colors) # {'赤', '青', '緑'}
集合は、重複を除いたユニークな要素のリストが必要なときに便利です。
しかし、初心者のうちは使うことが少ないため頭の片隅に置いておく感覚でよいでしょう。
Pythonの「集合」は、{}を使うため、「辞書」とちょっと似ていますが、少し違います。「辞書」は、キーと値がペアになっているのに対して、「集合」は1つの値が1つの要素になっています。
ここだけ見ると「リスト」に似ているように思えますが、大きな違いがあります。
「集合」は順番を持たないので、インデックス(位置を表す番号)がありません。これが集合の特徴です!
集合の操作方法
Pythonの集合(set)に要素を追加したり削除したりする操作について説明します。
要素の追加
- add()メソッド
集合に単一の要素を追加するには、add()メソッドを使用します。
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # {1, 2, 3, 4}
要素の削除
- remove()メソッド
指定した要素を集合から削除します。要素が存在しない場合はKeyErrorが発生します。
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # {1, 3}
- discard()メソッド
指定した要素を集合から削除します。要素が存在しない場合でもエラーは発生しません。
my_set = {1, 2, 3}
my_set.discard(2)
my_set.discard(4) # 要素が存在しないが、エラーは発生しない
print(my_set) # {1, 3}
- pop()メソッド
集合からランダムに要素を1つ削除し、その要素を返します。集合が空の場合はKeyErrorが発生します。
my_set = {1, 2, 3}
removed = my_set.pop()
print(removed) # 1, 2, 3のいずれか
print(my_set) # 残りの2つの要素
- clear()メソッド
集合のすべての要素を削除します。
my_set = {1, 2, 3}
my_set.clear()
print(my_set) # set()
これらのメソッドを使用することで、Pythonの集合に要素を簡単に追加したり削除したりすることができます。
空の集合
空の集合を作成するには、set()
関数を使用します。以下に空の集合の作成方法と注意点をまとめます。
- 空の集合の作成:
empty_set = set()
- 注意点:
- 空の波括弧
{}
は空の辞書を作成するため、空の集合には使用できません。
empty_dict = {} # これは空の辞書になります
- 空集合の確認:
- 空集合かどうかを確認するには、以下の方法があります。
a) 空の集合と比較する:python if my_set == set(): print('空集合です')
b) 要素数が0かどうかを確認する:python if len(my_set) == 0: print('空集合です')
空の集合を正しく作成し、確認することで、集合操作を適切に行うことができます。
和集合、差集合、積集合
Pythonの集合型(set)は、数学の集合と同様に、和集合、差集合、積集合などの操作を行うことができます。
以下に主な集合操作を説明します。
和集合
Z = x | y

2つの集合の全ての要素を含む新しい集合を作成します。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2 # または set1.union(set2)
print(union_set) # {1, 2, 3, 4, 5}
積集合

Z = x & y
2つの集合に共通する要素のみを含む新しい集合を作成します。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1 & set2 # または set1.intersection(set2)
print(intersection_set) # {3}
差集合

Z = x - y
ある集合から別の集合に含まれる要素を除いた新しい集合を作成します。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1 - set2 # または set1.difference(set2)
print(difference_set) # {1, 2}
対称差

2つの集合のうち、どちらか一方にのみ含まれる要素からなる新しい集合を作成します。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1 ^ set2 # または set1.symmetric_difference(set2)
print(symmetric_difference_set) # {1, 2, 4, 5}
これらの操作を使用することで、数学の集合と同様の操作をPythonのプログラム内で簡単に実行できます。
集合演算は、データの比較や分析、重複の除去などの場面で非常に便利です。
インデント
- 1 インデント→半角スペース 4 つ
Pythonのインデントとは、プログラムの中で行の先頭に空白を入れて字下げをすることです。これは、コードのまとまりや構造を表すためにとても大切な役割を果たします。
簡単に言うと、インデントは「段落」のようなものです。本を読むときに段落があると読みやすいように、プログラムにもインデントがあると読みやすくなります。
インデントは通常、スペース4つを使います。これは、Pythonの決まりごと(PEP8)で推奨されているからです。
インデントを正しく使うと、プログラムが読みやすくなり、間違いも少なくなります。だから、Pythonを学ぶときは、インデントの使い方をしっかり覚えることが大切です。
Pythonでは、インデントは単なる見た目の問題ではありません。プログラムの動作にも影響します。
例えば、
条件分岐が書けるif文(条件式・条件分岐)をつかえば、以下のようになります。
if 天気 == "晴れ":
外で遊ぶ
アイスを食べる
外出する
この例では、「外で遊ぶ」と「アイスを食べる」が字下げされているので、天気が晴れの時だけ行われます。「外出する」は字下げされていないので、天気に関係なく常に行われます。
条件分岐
- if elif elese で表現する
==
と!=
演算子は数値以外の文字列などでもつかうことができる- 変数は左右どちらでもよいが、左側に書くのが一般的
Pythonの条件式とは、文字通り「条件を式にしたもの」です。
言い換えれば、「もし〜なら」という考え方をプログラムで表現する方法です。
条件式を使うことで、プログラムに「判断する力」を与えることができます。これにより、状況に応じて異なる行動をとるプログラムを作ることができるのです。
条件式の基本的な形は以下のようになります。
if 条件式:
実行したい処理(条件式がTrueのときの処理)
例えば、年齢によって入場できるかどうかを判断するプログラムを考えてみましょう。
age = 15
if age >= 20:
print("入場できます")
else:
print("入場できません")
この例では、もし年齢が20歳以上なら「入場できます」と表示し、そうでなければ「入場できません」と表示します。
条件式では、複数の条件を組み合わせることもできます。
- 「かつ」の場合は
and
を使います - 「または」の場合は
or
を使います
例えば、
temperature = 30
humidity = 85
if temperature >= 30 and humidity >= 80:
print("暑くて湿気が多いです")
この例では、気温が30度以上で、かつ湿度が80%以上の場合に「暑くて湿気が多いです」と表示します。
よく使われる条件式①「値が同じである」
値が同じである場合は、Pythonでは ==
演算子を使用します。
x = 5
y = 5
if x == y:
print("xとyは同じ値です")
この例では、xとyが同じ値(5)なので、”xとyは同じ値です”と出力されます。
==
演算子は値の等価性を比較します。文字列、数値、リストなど、様々なデータ型で使用できます。
Bool型の場合、以下のようになります。
ログイン回数が1回かどうかについて、True(真)かFalse(偽)を返します。login_cntの値が
- 1ならTrue
- 1以外ならFalse
login_cnt == 1
print(login_cnt == 1)
# > True
また、TrueとFalseは値なので変数に代入することができます。
ログイン回数が1だったら「初回ログインユーザーです」というプログラムを作るのであれば、
if login_cnt == 1:
print("初回ログインユーザーです")
また、数値以外の文字列などでもつかうことができます。
if item == "りんご":
print("これはりんごです")
注意点:
==
は値の比較であり、オブジェクトの同一性は比較しません。- 浮動小数点数の比較には注意が必要で、小数点以下の誤差により予期せぬ結果になることがあります。
- 大文字と小文字は区別されます(例:’abc’ == ‘ABC’ は False)。
値が同じかどうかの比較は、条件分岐や検証において非常に重要な操作です。
よく使われる条件式②「値が同じではない」
値が同じではないかどうかの比較は、条件分岐や検証において非常に重要な操作です。
値が同じではない場合は、Pythonでは !=
演算子を使用します。さきほどの、 ==
と逆の動きになります。
x = 5
y = 10
if x != y:
print("xとyは異なる値です")
この例では、xとyが異なる値(5と10)なので、”xとyは異なる値です”と出力されます。
!=
演算子は「等しくない」ことを表し、2つの値が異なる場合にTrueを返します。これは ==
演算子の逆の動作をします。
注意点:
!=
は数値、文字列、リストなど、様々なデータ型で使用できます。- 浮動小数点数の比較には注意が必要で、小数点以下の誤差により予期せぬ結果になることがあります。
また、数値以外の文字列などでもつかう場合は次のようになります。
if item == "りんご":
print("これはりんごではない")
よく使われる条件式③ 値の大きさの比較
大きさの比較を使うと、プログラムに「判断する力」を与えることができます。これにより、点数や年齢、時間などに応じて異なる行動をとるプログラムを作ることができるのです。
Pythonの条件式で値の大きさを比較する方法を説明します。
大きさの比較に使う記号
>
AがBよりも大きい
A > B
例えば、5 > 3
は True(正しい)になります。
<
AがBよりも小さい
A < B
例えば、2 < 4
は True(正しい)になります。
>=
AがB以上
A >= B
例えば、5 >= 5
は True(正しい)になります。
<=
AがB以下
A <= B
例えば、3 <= 4
は True(正しい)になります。
使い方の例
数学のテストの点数で合格かどうかを判断するプログラムを考えてみましょう。
score = 75
if score >= 60:
print("合格です!")
else:
print("残念、不合格です。")
この例では、もし点数が60点以上なら「合格です!」と表示し、そうでなければ「残念、不合格です。」と表示します。
注意点
- 数値だけでなく、文字列の比較もできますが、アルファベット順で比較されます。
- 異なるデータ型(例えば数値と文字列)の比較はエラーになるので注意が必要です。
よく使われる条件式④ 含まれる
in
演算子は条件文(if文)と組み合わせて使用されることが多く、特定の要素の存在に基づいて処理を分岐させるのに便利です。
Pythonでは、「含まれる」という概念を表現するために in
演算子を使用します。
in
演算子の基本的な使い方は以下の通りです、
要素 in コンテナ
この式は、指定した要素がコンテナ(リスト、タプル、文字列など)に含まれている場合に True
を返し、含まれていない場合に False
を返します。
例えば、
print(1 in [0, 1, 2]) # True
print(100 in [0, 1, 2]) # False
in
演算子は以下のような場面で使用できます。
- リスト、タプル、集合などのイテラブルオブジェクトに対する要素の存在確認。
- 文字列内の部分文字列の存在確認。
- 辞書のキーの存在確認。
また、not in
を使用することで、要素が含まれていないことを確認できます。
print(2 not in [1, 3, 5]) # True
よく使われる条件式⑤ 否定の条件式
Pythonで否定の条件式を表現するには、主にnot
演算子を使用します。
not演算子の基本的な使い方
not
演算子を使用することで、条件式をより読みやすく、直感的に書くことができます。特に、否定的な条件を表現する際に有用です。
not
演算子は、指定した式の真偽値を反転させます。
True
をFalse
にFalse
をTrue
に
例:
age = 20
if not (age < 18):
print("成人です")
この例では、18歳未満でない(つまり18歳以上)場合に”成人です”と出力します。
notの使用場面
- 条件の否定:
if not user.is_logged_in():
print("ログインしてください")
- 空のコレクションの確認:
if not my_list:
print("リストは空です")
- 真偽値の反転:
is_valid = True
is_invalid = not is_valid
複数の条件式を組み合わせる方法
これらの方法を適切に組み合わせることで、複雑な条件分岐を実現できます。
Pythonで複数の条件式を組み合わせる場合、主に以下の方法があります。
論理演算子の作成例
and
: 全ての条件がTrueの場合にTrueとなります。
AかつB
条件式A and 条件式B
or
: いずれかの条件がTrueの場合にTrueとなります。
AまたはB
条件式A or 条件式B
例:
x = 15
if x >= 10 and x <= 20:
print("xは10以上20以下です")
if x < 10 or x > 20:
print("xは10未満または20より大きいです")
- 入れ子構造(ネスト)の使用:
複数の条件を段階的に確認する場合に使用します。
x = 16
if x >= 10:
if x <= 20:
if x % 2 == 0:
print("xは10以上20以下の偶数です")
elif
の使用:
複数の条件を順番に確認する場合に使用します。
score = 75
if score >= 90:
print("優")
elif score >= 80:
print("良")
elif score >= 70:
print("可")
else:
print("不可")
- 括弧()を使用した複数行での条件記述:
条件式が長くなる場合、可読性を高めるために使用します。
if (x >= 10 and x <= 20 and
y >= 5 and y <= 15):
print("条件を満たしています")
Falseの時に別の条件式で条件分岐させる方法
if文の条件がFalseの時に別の条件式で条件分岐させるには、elif
(else if の略)を使用します。
elif
を使うことで、最初の条件がFalseの場合に別の条件を評価することができます。
elif
は必要な数だけ追加することができ、複雑な条件分岐を実現できます。また、最後のelse
は省略可能です。
基本的な構文は以下のようになります。
if 条件1:
条件1がTrueの時の処理
elif 条件2:
条件1がFalseで、条件2がTrueの時の処理
elif 条件3:
条件1と条件2がFalseで、条件3がTrueの時の処理
else:
すべての条件がFalseの時の処理
例えば、年齢に基づいて異なるメッセージを表示するプログラムを考えてみましょう。
age = 25
if age < 18:
print("未成年です")
elif age < 65:
print("成人です")
else:
print("シニアです")
この例では、最初の条件(age < 18)がFalseの場合、次の条件(age < 65)が評価されます。
ほかにも、偶数か奇数かを仕分けるプログラムは次のようになります。
number = 0
if number % 2 == 0:
print("偶数です")
else:
print("奇数です")
これを、numberのところに数字を入れて動かしてみると、どちらかが表示されます。
繰り返し処理(for文)
Pythonのfor文は、プログラムで繰り返し処理を行うための便利な仕組みです。以下では、分かりやすいように、基本的な使い方をまとめています。
- for文は「同じ処理を何度も繰り返す」ために使います。
- リストや数字など、繰り返し可能なデータを扱えます。
range()
関数で連続した数字を簡単に生成できます。
Pythonのfor文はとても便利で、ゲームやアプリ作りでもよく使われます。ぜひ練習してみましょう!
for文とは?
for文は、リストや文字列などの「繰り返し可能なデータ」を1つずつ取り出して処理を行います。例えば、「りんご」「バナナ」「みかん」という果物リストがあったとき、それぞれの果物について順番に処理を行うことができます。
基本的な書き方
以下がfor文の基本的な形です:
for 変数 in データ:
処理
- 変数:データから1つずつ取り出した値が入る場所。
- データ:リストや文字列など、
繰り返しが可能な
処理する対象(リスト・辞書・タプル・集合など)。 - 処理:繰り返したい内容をここに書きます。
簡単な例:リストを使った繰り返し
以下は果物リストを使った例です:
fruits = ['りんご', 'バナナ', 'みかん']
for fruit in fruits:
print(fruit)
実行結果:
textりんご
バナナ
みかん
このコードでは、fruits
というリストから1つずつ要素がfruit
に入り、それがprint()
で表示されます。
数字を使った繰り返し
数字を順番に扱いたいときは、range()
という関数を使います。
for i in range(5):
print(i)
実行結果:
0
1
2
3
4
range(5)
は、0から4までの数字を作ります(5は含まれません)。
応用例:メッセージ付きで表示
繰り返し回数と一緒にメッセージを表示する例です:
for i in range(3):
print(f"{i + 1}回目のこんにちは!")
実行結果:
1回目のこんにちは!
2回目のこんにちは!
3回目のこんにちは!
辞書を使った繰り返し
Pythonのfor文について、繰り返しオブジェクトに辞書を指定する方法を解説します。
辞書をfor文で処理する際、主に3つの方法があります:
- キーのループ処理
- 値のループ処理
- キーと値の同時ループ処理
キーのループ処理
my_dict = {'apple': 100, 'banana': 200, 'cherry': 300}
for key in my_dict:
print(key)
値のループ処理
my_dict = {'apple': 100, 'banana': 200, 'cherry': 300}
for value in my_dict.values():
print(value)
values()
メソッドを使用することで、辞書の値のみを取り出せます13。
キーと値の同時ループ処理
my_dict = {'apple': 100, 'banana': 200, 'cherry': 300}
for key, value in my_dict.items():
print(f"{key}: {value}")
items()
メソッドを使うと、キーと値のペアを同時に取り出せます。
辞書を繰り返しオブジェクトとして使用する
辞書自体を繰り返しオブジェクトとして使用する場合、デフォルトではキーが順番に取り出されます。
my_dict = {'apple': 100, 'banana': 200, 'cherry': 300}
for item in my_dict:
print(item) # キーが出力されます
この方法は、my_dict.keys()
を使用するのと同じ結果になります。
応用例
- 条件付きループ処理:
prices = {"apple": 100, "banana": 50, "cherry": 200}
expensive = {k: v for k, v in prices.items() if v >= 100}
print(expensive) # {'apple': 100, 'cherry': 200}
この例では、100円以上の商品のみを新しい辞書に抽出しています。
- ネストされた辞書のループ処理:
nested_dict = {
"fruit": {"apple": 100, "banana": 50},
"vegetable": {"carrot": 30, "spinach": 40}
}
for category, items in nested_dict.items():
print(f"{category}:")
for name, price in items.items():
print(f" {name}: {price}")
この方法を使うと、階層構造を持つ辞書データを簡単に処理できます。
以上の方法を使うことで、Pythonの辞書を効果的にfor文で処理できます。辞書の特性を活かしたループ処理により、データの操作や分析が容易になります。
rengeとfor文
rengeとは連続した整数をとりだすことができるものです。
Pythonのrange()関数とfor文の組み合わせは、繰り返し処理を効率的に行うための強力なツールです。以下に、range()とfor文の基本的な使い方と応用例を説明します。
基本的な使い方
range()関数は、連続した整数のシーケンスを生成します。for文と組み合わせることで、指定回数の繰り返し処理が簡単に実現できます。
for i in range(5):
print(i)
この例では、0から4までの数字が順に出力されます。
※()の中に指定した値自体は含まれません。
range()の引数
range()関数は、1つから3つの引数を取ることができます:
- range(stop): 0から(stop-1)までの整数を生成
- range(start, stop): startから(stop-1)までの整数を生成
- range(start, stop, step): startからstopまで、stepずつ増加する整数を生成
range()関数の3つの使い方について、それぞれ具体的な例を示します。
1. range(stop)
この形式は、0から始まり、指定した数(stop)の1つ前までの整数を生成します。
print("range(5)の例:")
for i in range(5):
print(i, end=" ")
print("\n")
# 出力:
# range(5)の例:
# 0 1 2 3 4
2. range(start, stop)
この形式は、指定した開始数(start)から、終了数(stop)の1つ前までの整数を生成します。
print("range(2, 8)の例:")
for i in range(2, 8):
print(i, end=" ")
print("\n")
# 出力:
# range(2, 8)の例:
# 2 3 4 5 6 7
range(-10, -4)の例:print("range(-10, -4)の例:")
for i in range(-10, -4):
print(i, end=" ")
print("\n")
# 出力:
# range(-10, -4)の例:
# -10 -9 -8 -7 -5
3. range(start, stop, step)
この形式は、開始数(start)から終了数(stop)の1つ前まで、指定した間隔(step)で整数を生成します。
print("range(1, 10, 2)の例:")
for i in range(1, 10, 2):
print(i, end=" ")
print("\n")
# 出力:
# range(1, 10, 2)の例:
# 1 3 5 7 9
print("range(10, 0, -1)の例(逆順):")
for i in range(10, 0, -1):
print(i, end=" ")
print("\n")
# 出力:
# range(10, 0, -1)の例(逆順):
# 10 9 8 7 6 5 4 3 2 1
これらの例を通じて、range()関数の多様な使い方がわかります。開始値、終了値、そしてステップ(増分)を自由に設定することで、様々な数列を簡単に生成できます。これはfor文と組み合わせて繰り返し処理を行う際に非常に便利です。
応用例
- リストの要素にアクセス:
pythonfruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
- 逆順のループ:
pythonfor i in range(10, 0, -1):
print(i)
- 数列の合計を計算:
pythontotal = sum(range(1, 101))
print(f"1から100までの合計: {total}")
注意点
- range()の終了値は結果に含まれません。
- for文とrange()を組み合わせる際、変数名は慣習的に
i
やj
が使われますが、意味のある名前を付けることも重要です。
range()とfor文の組み合わせは、Pythonプログラミングにおいて非常に頻繁に使用される基本的な構文です。これらを適切に使いこなすことで、効率的で読みやすいコードを書くことができます。
Pythonのfor文におけるbreakの使用方法について説明します。
breakとは
breakは、for文やwhile文などの繰り返し処理を途中で終了させるために使用される制御文です。breakが実行されると、そのループは即座に終了し、ループ以降の処理に移ります。
基本的な使い方
breakは通常、if文と組み合わせて使用されます。以下は基本的な構文です:
pythonfor 変数 in シーケンス:
if 条件:
break
# ループ内の処理
具体例
以下は、1から10までの数字を出力するが、5に達したら処理を中断する例です:
pythonfor i in range(1, 11):
if i == 6:
break
print(i)
この例では、1から5までの数字が出力され、6になった時点でループが終了します。
breakの活用
- 特定の条件で処理を終了: データ探索や計算において、特定の条件が満たされたら処理を終了させたい場合に使用します。
- 無限ループからの脱出: while Trueのような無限ループを使用する際、特定の条件でループを抜け出すために使用します。
- 効率化: 必要な処理が完了した時点でループを終了させることで、不要な繰り返しを避けられます。
注意点
- breakはループ内でのみ使用可能です。
- ネストされたループの場合、breakは最も内側のループのみを終了させます。
- 過度の使用は可読性を下げる可能性があるため、適切な使用が重要です。
breakを適切に使用することで、効率的で柔軟なループ処理が可能になります。
for文のcontinue
Pythonのfor文におけるcontinueは、ループの現在の反復をスキップし、次の反復に移行するために使用される制御文です。
continueを使うことで、特定の条件下で処理を飛ばし、ループの効率的な制御が可能になります。
continueの基本的な使い方
continueは通常、if文と組み合わせて使用されます:
pythonfor 変数 in イテラブル:
if 条件:
continue
# 条件に合致しない場合の処理
continueの動作
- continueが実行されると、現在の反復の残りの処理をスキップします。
- ループは次の要素から処理を継続します。
具体例
以下は、1から10までの数字を出力するが、5をスキップする例です:
pythonfor i in range(1, 11):
if i == 5:
continue
print(i)
この例では、1から4と6から10までの数字が出力されます。5の時はcontinueにより処理がスキップされます。
continueの活用
- 不要なデータのスキップ: リスト内の特定の要素を処理から除外したい場合に使用します。
- 条件付き処理: 特定の条件を満たす要素のみを処理したい場合に有効です。
- ループの最適化: 不要な処理をスキップすることで、ループの効率を向上させます。
多重ループでのcontinue
多重ループの場合、continueは最も内側のループにのみ影響します。外側のループに影響を与えたい場合は、別の制御構造が必要になります。
注意点
- BreakとContinueは似ているのでよく理解して使ってください。
- continueはループ内でのみ使用可能です。
- 過度の使用は可読性を下げる可能性があるため、適切な使用が重要です。
- elseブロック内でcontinueを使用すると、外側のループの処理をスキップすることができます1。
continueを適切に使用することで、より柔軟で効率的なループ処理が可能になります。特に、大量のデータを処理する際や、特定の条件下でのみ処理を行いたい場合に有用です。
関数
関数(かんすう)は「特定の仕事をするプログラムの塊」だと思ってください。
例えば、ゲームで「攻撃する」「アイテムを使う」などの動作がそれぞれ関数になります。
関数を使うと、同じ処理を何度も書かなくて済むし、プログラムが整理されてわかりやすくなります!
関数には、組み込み関数と自分で作る関数の2種類があります。
組み込み関数
組み込み関数(Built-in Functions)は、Pythonに最初から用意されている基本的な機能群で、特別な宣言なしですぐに使用できる便利なツールです。主な特徴は以下の通りです:
- 即時利用可能:
import
なしで直接呼び出せるprint(len([1, 2, 3])) # 3(リストの要素数)
- 多様な用途:
- 数値処理:
abs()
,round()
,sum()
- 型変換:
int()
,str()
,list()
- シーケンス操作:
len()
,max()
,sorted()
- 数値処理:
- 効率化:共通処理を簡潔に記述可能
numbers = [5, 2, 8] print(max(numbers)) # 8(最大値取得)
基本機能別 組み込み関数一覧表(一部)
カテゴリ | 関数 | 使用例 | 説明 | 返り値型 |
---|---|---|---|---|
数値処理 | abs(x) | abs(-5) | 絶対値 | int/float |
round(x[,n]) | round(3.14159, 2) | 四捨五入 | int/float | |
divmod(a,b) | divmod(10,3) | 商と余り | tuple | |
sum(iterable) | sum() | 合計計算 | int/float | |
範囲生成 | range(stop) range(start,stop[,step]) | range(5) range(1,10,2) | 連続した数値を取り出す | range |
型変換 | int(x) | int("10") | 整数変換 | int |
float(x) | float("3.14") | 浮動小数点数変換 | float | |
str(x) | str(100) | 文字列変換 | str | |
list(x) | list("abc") | リスト変換 | list | |
シーケンス操作 | len(s) | len() | 要素数取得 | int |
max(iterable) | max() | 最大値 | 要素型 | |
min(iterable) | min() | 最小値 | 要素型 | |
sorted(iterable) | sorted() | ソート済みリスト生成 | list | |
集合操作 | set(iterable) | set() | 重複排除集合 | set |
frozenset(iterable) | frozenset("aabb") | 不変集合 | frozenset | |
真偽判定 | all(iterable) | all([True,1,"a"]) | 全要素True判定 | bool |
any(iterable) | any([False,0,""]) | 1つでもTrue判定 | bool | |
入出力 | print(*objects) | print("Hello", end="") | 文字を出力する | None |
input(prompt) | input("名前:") | ユーザー入力取得 | str | |
オブジェクト操作 | dir(object) | dir(str) | 属性一覧取得 | list |
type(object) | type(100) | 型情報取得 | type |
この表を参考に、適切な組み込み関数を選択することで、コードの簡潔化と処理効率の向上が図れます。特にmap()
やfilter()
などの関数型プログラミング向け関数を活用すると、forループを使わない簡潔な記述が可能になります。
実践的な使用例
1. データ整形(複数関数の組み合わせ)
values = ["3.14", "100", "0.5"]
processed = [round(float(s), 1) for s in values]
# 結果: [3.1, 100.0, 0.5]
2. 条件付きデータ抽出
scores = [80, 92, 55, 63]
passed = list(filter(lambda x: x >= 70, scores))
# 結果: [80, 92]
3. 集合演算(データ比較)
set1 = set("python")
set2 = set("programming")
common = set1 & set2 # 共通文字: {'p', 'o', 'n', 'g', 'r'}
- 型変換の連鎖:
int(float("3.14"))
のように組み合わせ可能 - メモリ節約:
map()
やfilter()
でジェネレータを生成 - デバッグ活用:
dir()
で未知のオブジェクトを調査 - 即時計算:
sum()
やmin()
でループ不要な集計
注意: Python 3.13時点で全71種類の組み込み関数が存在します。上記は頻出関数の一部です。特殊用途の関数(
compile()
やeval()
など)は使用時に注意が必要です。
公式ドキュメントには例えばeval()
やcompile()
など高度な機能も含まれますが、初心者はまずprint()
やlen()
などの基本関数から習得すると良いでしょう。
自分で作る関数の基本形
def 関数名():
# ここに処理を書く
def
(でふ): 「これから関数を定義しますよ」の合図- 関数名: 関数につける名前(自由に決められます)
()
: 後で説明しますが、ここに情報を入れられます:
(コロン): これで関数の中身が始まります
簡単な関数を作ってみよう
「こんにちは」と表示する関数を作ってみます。
def
greet
():
print("こんにちは!")
greet
()# 「こんにちは!」と表示される
・・・関数の名前greet
()
print("こんにちは!")
・・・まとめたい処理
このように、一度関数を作れば、何度でも呼び出して使えるんです!
関数の便利なポイント
- 何度でも使える
greet() # 1回目 greet() # 2回目 greet() # 3回目
- プログラムが整理される
- 長いプログラムも関数に分けると見やすくなります
- 修正が楽
- 1か所変えるだけで、すべての呼び出し箇所に反映されます
関数に情報を渡す(引数)
関数に情報を渡して、いろいろな動作をさせられます。
def greet(name):
print(name + "さん、こんにちは!")
greet("太郎") # 「太郎さん、こんにちは!」
greet("花子") # 「花子さん、こんにちは!」
name
が「引数」(ひきすう)と呼ばれる部分です- 呼び出す時に、違う値を渡せます
※greet("太郎")
でダブルクォーテーション(""
)が必要な理由は、「太郎」が文字列データであることを明確にするためです。シングルクォート(’)もダブルクォート(”)もOKです。文字列データにしないと、変数として認識されエラーになってしまいます。
関数から情報を受け取る(戻り値)
関数は計算結果などの情報を返すこともできます。
def add(a, b):
return a + b # return(りたーん)で結果を返す
result = add(3, 5)
print(result) # 8と表示される
return
: 関数の結果を返す命令- 返ってきた値は変数に保存できます
実際にやってみよう!
- 三角形の面積を計算する関数 python
def triangle_area(base, height): return base * height / 2 print(triangle_area(10, 5)) # 25.0
- 偶数かどうか判定する関数 python
def is_even(number): return number % 2 == 0 print(is_even(4)) # True print(is_even(5)) # False
位置引数とキーワード引数の違い
関数には、位置引数とキーワード引数があります。
位置引数(Positional Arguments)
- 順序で決まる引数:関数定義時のパラメータ順に値が割り当てられます
def introduce(name, age): print(f"{name}さんは{age}歳です") introduce("太郎", 15) # 「太郎」がnameに、15がageに自動的に割り当て
- 特徴:
- 呼び出し時に引数名を指定しない
- 順番を間違えると意図しない動作になる
- シンプルな関数でよく使われる
キーワード引数(Keyword Arguments)
- 名前で指定する引数:パラメータ名=値の形式で明示的に指定
introduce(age=15, name="太郎") # 順番が逆でも正しく動作
- 特徴:
- 引数の順番を自由に変更可能
- コードの可読性が向上(どの値がどのパラメータか明確)
- デフォルト引数と組み合わせて使われることが多い
主な違いの比較
特徴 | 位置引数 | キーワード引数 |
---|---|---|
指定方法 | 値のみ | パラメータ名=値 |
順序の影響 | あり(重要) | なし |
可読性 | 低い | 高い |
デフォルト値との相性 | 基本単独使用 | 併用可能 |
使用例 | シンプルな関数 | パラメータが多い関数 |
実際の使い分け例
python# 位置引数が適している例
def power(base, exponent):
return base ** exponent
# キーワード引数が適している例
def create_profile(name, age=20, country="日本", hobby=None):
print(f"{name}({age}歳・{country})")
if hobby:
print(f"趣味: {hobby}")
create_profile("佐藤", hobby="写真") # ageとcountryはデフォルト値使用
注意点
- 位置引数とキーワード引数を混在させる場合、位置引数を先に記述する必要があります python
# 正しい例 introduce("太郎", age=15) # 誤った例(エラー発生) introduce(name="太郎", 15)
Python 3.8以降では、/
と*
を使って引数の渡し方を強制できます
/
より前:位置引数のみ許可*
より後:キーワード引数のみ許可
def example(pos_only, /, standard, *, kwd_only):
print(pos_only, standard, kwd_only)
example(1, 2, kwd_only=3) # 正しい
example(1, standard=2, kwd_only=3) # 正しい
example(pos_only=1, 2, 3) # エラー
関数を使う時の注意点
- 関数は定義しただけでは動きません。必ず「呼び出す」必要があります
- 関数名はわかりやすい名前にしましょう
- 良い例:
calculate_area
,check_password
- 悪い例:
func1
,aaa
- 良い例:
もっと練習!
関数はプログラミングの超重要な部分です。以下のような関数を作って練習してみましょう。
- 円の面積を計算する関数
- テストの平均点を計算する関数
- じゃんけんの勝敗を判定する関数
関数が使えるようになると、プログラミングがもっと楽しくなりますよ!
クラス
クラスを使うと、整理ができてすっきりしたコードを描くことができるようになります。また、ライブラリはこのクラスを使って作られているものも多いため理解しておくべきです。
クラスは、プログラムの中で「設計図」や「テンプレート」のような役割を持ちます。たとえば、「人」を表すクラスを作れば、名前や年齢といった情報(属性)や、自己紹介する動き(メソッド)をまとめて管理できます。
- クラスは「設計図」や「型」のようなもの
- 属性(データ)とメソッド(動き)をまとめて管理できる
- コードの見通しが良くなり、変更や再利用が簡単になる
- 継承でさらに便利に使える
- オブジェクト(実体)を共通した属性で分類(どれをどこの引き出しにしまうか決めるイメージ)
- クラスが持つ処理=「メソッド(方法)」=関数で定義
- クラスが持つオブジェクトごとの異なる値=「インスタンス変数」=[self.変数名]

引き出しで例えると
いれるもの=インスタンス変数
どう入れるか=メソッド
と捉えるとわかりやすいかもしれません。
クラスを使う主なメリット
- コードがスッキリする
同じような処理を何度も書かずに済み、プログラムが短く・見やすくなります。 - 変更が簡単になる
もし仕様を変えたくなっても、クラスの中身を直すだけで、関連するすべての部分が自動的に変わります。 - 再利用できる
一度作ったクラスは、何度でも使い回せます。たとえば「人」クラスを作れば、いろいろな人のデータを簡単に作成できます。 - 整理しやすい
関連するデータ(属性)と動き(メソッド)を一つにまとめられるので、プログラム全体が分かりやすくなります。
クラスのざっくり特徴
- 設計図から「実体(インスタンス)」を作れる
クラスはあくまで設計図。そこから「実際の人」や「実際の車」などのインスタンスを作ります。 - 属性とメソッドがある
- 属性:そのインスタンスが持つデータ(例:名前、年齢)
- メソッド:そのインスタンスができること(例:自己紹介する)
- 継承ができる
すでにあるクラスを元にして、少しだけ機能を追加した新しいクラスも作れます(例:「人」クラスを元に「学生」クラスを作る)。
クラスの書き方
たとえば「人(User
)」を表すクラスを作ると、こんな感じです。
class User:
def __init__(self, name, age):
self.name = name # 属性
self.age = age # 属性
def introduce(self): # メソッド
print(f"私の名前は{self.name}です。{self.age}歳です。")
def __init__(
#自分で設定self,
):
インスタンス変数の初期化はこの「イニシャライザ」と呼はれる特殊なメソッドで行うのが一般的(アンダースコア_が2つなのに注意)- 「インスタンス変数」=[self.変数名]
- [self.] は、「そのメソッドを呼び出したインスタンス自身」を指す特別な変数です。selfを使うことで、そのインスタンス固有のデータや他のメソッドにアクセスできるようになります。
この設計図(クラス)から、実際の「人(User)」を作ることができます。
taro = User("太郎", 15)
taro.introduce() # → 私の名前は太郎です。15歳です。
また、これらの直を取得するために、[オブジェクト.インスタンス変数名] で指定できます。
x = taro.name
メソッド(方式)の呼び出し方
Pythonのクラスには主に3種類のメソッドがあり、それぞれ呼び出し方が異なります。
1. インスタンスメソッド
- 呼び出し方
インスタンス(オブジェクト)を通じて呼び出します。
class Sample:
def hello(self):
print("こんにちは")
obj = Sample()
obj.hello() # インスタンスメソッドの呼び出し
- ポイント
第一引数はself
で、呼び出したインスタンス自身を指します。
2. クラスメソッド
- 呼び出し方
クラス名またはインスタンス名のどちらからでも呼び出せます。
class Sample:
@classmethod
def greet(cls):
print("クラスメソッドです")
Sample.greet() # クラス名から呼び出し
obj = Sample()
obj.greet() # インスタンスから呼び出し
- ポイント
第一引数はcls
で、呼び出したクラス自身を指します。
3. スタティックメソッド
- 呼び出し方
クラス名またはインスタンス名のどちらからでも呼び出せます。
class Sample:
@staticmethod
def say_hi():
print("スタティックメソッドです")
Sample.say_hi() # クラス名から呼び出し
obj = Sample()
obj.say_hi() # インスタンスから呼び出し
- ポイント
第一引数にself
やcls
は不要です。
まとめ表
メソッドの種類 | 定義時の第1引数 | 呼び出し方 |
---|---|---|
インスタンスメソッド | self | インスタンス名.メソッド名() |
クラスメソッド | cls | クラス名.メソッド名() または インスタンス名.メソッド名() |
スタティックメソッド | なし | クラス名.メソッド名() または インスタンス名.メソッド名() |
補足
クラス内で他のメソッドを呼び出す場合は、self.メソッド名()
やcls.メソッド名()
を使います。
Pythonのクラスのさまざまな書き方例
Pythonのクラスは、用途や目的によっていろいろな書き方ができます。ここでは代表的な例をいくつか紹介します。
1. 何もしないシンプルなクラス
class TestClass:
pass
x = TestClass()
「pass」は「何もしない」という意味で、中身が空のクラスを作るときに使います。
2. 属性(データ)を持つクラス
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person1 = Person("Alice", 30)
print(f"{person1.name}は{person1.age}歳です。")
__init__
は「初期化メソッド」と呼ばれ、インスタンスを作るときに自動で呼ばれます。
3. メソッド(方式)を持つクラス
class Calculator:
def add(self, x, y):
return x + y
def subtract(self, x, y):
return x - y
calc = Calculator()
print(calc.add(5, 3)) # 8
print(calc.subtract(10, 2)) # 8
クラスの中で定義した関数は「メソッド」と呼ばれます。
4. 継承を使ったクラス
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name}がワンワンと鳴いています。"
class Cat(Animal):
def speak(self):
return f"{self.name}がニャーニャーと鳴いています。"
dog = Dog("ワンちゃん")
cat = Cat("にゃんこ")
print(dog.speak())
print(cat.speak())
「継承」は、すでにあるクラス(親クラス)をもとに新しいクラス(子クラス)を作る仕組みです。
5. クラス変数とインスタンス変数
class MyClass:
classVal = "クラス変数" # クラス全体で共通
def __init__(self):
self.instanceVal = "インスタンス変数" # インスタンスごとに異なる
obj = MyClass()
print(MyClass.classVal)
print(obj.instanceVal)
クラス変数は全インスタンスで共通、インスタンス変数は個別です。
6.クラスを使って「原価率(げんかりつ)」を計算する例
原価率とは?
原価率 = 原価 ÷ 売価 × 100(%)
class CostCalculator:
def __init__(self, cost, price):
self.cost = cost # 原価
self.price = price # 売価
def calc_cost_rate(self):
if self.price == 0:
return "売価が0なので計算できません"
rate = (self.cost / self.price) * 100
return f"原価率は{rate:.1f}%です"
# 使い方
item = CostCalculator(300, 500) # 原価300円、売価500円の商品
print(item.calc_cost_rate()) # → 原価率は60.0%です
__init__
で原価(cost)と売価(price)を設定します。calc_cost_rate
メソッドで原価率を計算します。- インスタンスを作って、
calc_cost_rate()
を呼び出せば原価率が分かります!
このようにクラスを使うと、いろいろな商品の原価率を簡単に計算できます。
これらの例を参考に、クラスの使い方をいろいろ試してみてください!
モジュール
import
文を使って呼び出す
モジュールとは、それ単体で動かすのではなく別のPythonスクリプトから利用することを想定したPythonファイルです。
Pythonで書かれたプログラムの部品(道具箱の中の道具)のようなもので、関数やクラスなどを「.py」ファイルでまとめます。
モジュールを使うことで、膨大なスクリプトを一つのファイルで管理するよりも、それぞれ切り分けて使えるので混乱を避けるだけでなく、データ管理も楽になるため管理コストが下がります。
自分で作ることもできるし、Pythonに最初から入っている便利なモジュール(標準ライブラリ)や、他の人が作ったモジュール(外部モジュール)も利用できます。
モジュールを使うメリット
- コードを分かりやすく整理できる
関数やクラスを別ファイルにまとめておくことで、プログラム全体が見やすくなります。 - 再利用が簡単
一度作ったモジュールは、他のプログラムからも何度でも使い回せます。 - 他の人が作った便利な機能をすぐ使える
標準ライブラリや外部モジュールをimportするだけで、複雑な処理も簡単に実現できます。
モジュールの活用例
- 標準モジュールの利用例
math
モジュール:数学計算(例:三角関数や円周率の取得)。random
モジュール:乱数の生成やランダムな選択(例:random.randint(1, 10)
で1~10の乱数を得る)。datetime
モジュール:日付や時刻の取得・計算(例:現在日時の取得やフォーマット変換)。re
モジュール:正規表現による文字列検索や置換(例:文字列パターンの抽出や置き換え)。
- 自作モジュールの利用例
- 複数のファイルで使い回す関数やクラスを
my_module.py
などにまとめ、他のプログラムからimport
して再利用。
- 複数のファイルで使い回す関数やクラスを
- Blenderのアドオン開発での利用例
- BlenderのアドオンはPythonで書かれており、単一ファイルの場合は「〇〇.py」を直接インストールできます。
複数ファイル構成の場合は、__init__.py
を含むフォルダをzip化して「〇〇.zip」としてインストールします。
- BlenderのアドオンはPythonで書かれており、単一ファイルの場合は「〇〇.py」を直接インストールできます。
- Webアプリケーションの例
- Pythonのモジュールを活用したWebアプリケーションの具体例として、世界的に有名なサービスが多数存在します。主な例は以下の通りです。
Tradingview
TradingViewのデータやアラートをPythonで受信・活用するためのモジュールやライブラリがあります。たとえば、「tradingview-ta」などのPythonモジュールを使うことで、TradingViewのテクニカル分析データを取得したり、Webhook通知をPythonで受信して自動売買プログラムに連携したりすることができます。
Instagram
写真共有SNSのInstagramは、PythonのWebアプリケーションフレームワーク「Django」を活用して構築されています。Djangoは多くの機能を持つモジュール群を備えており、ユーザー管理や投稿機能などを効率的に実装しています。
YouTube
世界最大級の動画配信サービスYouTubeも、サーバーサイドの処理にPythonのモジュールを幅広く利用しています。動画の検索や再生、アカウント管理などの機能に活用されています。
Spotify
音楽ストリーミングサービスのSpotifyでは、データ分析や楽曲のおすすめ機能などにPythonのデータ処理モジュール(NumPyやPandasなど)が使われています。
Dropbox
オンラインストレージサービスDropboxは、ほぼ全てのプログラムがPythonで書かれており、ファイルの同期や共有などのWeb機能をPythonの各種モジュールで実現しています。
Pinterest
写真や動画の共有サービスPinterestもDjangoを中心に開発されており、Pythonのモジュールを活用して大規模なWebアプリケーションを支えています。
- Pythonのモジュールを活用したWebアプリケーションの具体例として、世界的に有名なサービスが多数存在します。主な例は以下の通りです。
また、PythonにはDjangoやFlask、FastAPIなどのWebアプリ開発向けモジュール(フレームワーク)が豊富にあり、これらを活用することでユーザー管理、データベース連携、API構築など多彩なWebアプリケーションが効率的に開発されています。
これらのように、Pythonのモジュールは日常的な処理から専門的なツール開発まで幅広く使われています。
モジュールの使い方
- 作り方
たとえばmy_module.py
というファイルを作り、その中に関数やクラスを書きます。 - 使い方(インポート方法)
他のPythonファイルでimport
文を使って呼び出します。
# my_module.py
def say_hello():
print("こんにちは!")
# main.py
import my_module
my_module.say_hello() # → こんにちは!
- 特定の関数やクラスだけを使いたいとき
from my_module import say_hello
say_hello()
- モジュールに別名をつけて使いたいとき
import my_module as mm
mm.say_hello()
サブフォルダや深い階層にあるPythonモジュールの使い方(インポート方法)
ディレクトリ構成例
textproject/
├─ main.py
└─ package/
├─ __init__.py
├─ sub1/
│ ├─ __init__.py
│ └─ mod_a.py
└─ sub2/
├─ __init__.py
└─ mod_b.py
サブフォルダ・深い階層のモジュールをインポートする方法
- main.py から深い階層のモジュールを使う場合
pythonfrom package.sub1 import mod_a
from package.sub2.mod_b import func_b # mod_b.py内のfunc_b関数を直接
このように、パッケージ名から順に「.」でつなげて指定します。
- 同じパッケージやサブフォルダ内での相対インポート 例:
mod_a.py
から同じ階層のmod_b.py
を使いたい場合
pythonfrom ..sub2 import mod_b # 1つ上の階層からsub2を指定
または
pythonfrom ..sub2.mod_b import func_b
「.」は現在の階層、「..」は1つ上の階層を表します。
- init.py を活用してまとめて公開
package/__init__.py
やpackage/sub1/__init__.py
で
pythonfrom . import mod_a
などと書くと、from package.sub1 import mod_a
でアクセスしやすくなります。
注意点
- 各フォルダに
__init__.py
を置くことで、そのフォルダがパッケージとして認識されます。 - 実行時にモジュールのパスが通っていない場合は、
sys.path
にディレクトリを追加することで解決できます。
まとめ
- 深い階層のモジュールは「パッケージ名.サブパッケージ名.モジュール名」とドットでつなげてインポート
- 同じパッケージ内では相対インポート(
.
や..
)も使える __init__.py
を活用すると整理しやすい
これでサブフォルダや深い階層にあるモジュールも柔軟に使えます。
モジュールとパッケージ・ライブラリの違い
- モジュール:1つの.pyファイル
- パッケージ:複数のモジュールをまとめたもの(フォルダのようなイメージ)
- ライブラリ:パッケージやモジュールの集まり(大きな道具箱)
まとめ
- モジュールはPythonの「.py」ファイルで、関数やクラスをまとめて管理・再利用できる便利な仕組み。
- import文で簡単に呼び出して使える。
- 標準モジュールや外部モジュールも豊富に用意されている。
外部ライブラリ
外部ライブラリ(サードパーティライブラリ)は、Pythonをインストールしただけでは使えない追加の部品(プログラムのセット)です。世界中の開発者が作った便利な機能がまとめられていて、自分で一から作らなくても、インストールしてすぐに使えるのが特徴です。
Pythonは外部ライブラリの種類・数が豊富です。検索で探してみると欲しいものが高い確率で見つかります。
- Python本体には最初から入っていない
- 必要なときに「pip」コマンドなどでインストールして使う
- たとえば「pandas」「numpy」「matplotlib」などが有名
- import文で呼び出して利用する
使うメリット
- 開発が速くなる
難しい機能や複雑な処理も、外部ライブラリを使えば短いコードで簡単に実現できます。 - 高品質・安全
多くの人がテストや改良を重ねているので、バグが少なく安心して使えます。 - いろんな分野に対応
データ分析、グラフ作成、機械学習、画像処理、ウェブ開発など、やりたいことに合わせてたくさんの外部ライブラリがあります。 - 情報が豊富
世界中で使われているので、困ったときはネットで調べればたくさんの解決方法や使い方が見つかります。
使い方の例
- 「pip install ライブラリ名」でインストール
- プログラムの最初で「import ライブラリ名」と書いて使う
import pandas as pd
import numpy as np
このようにして、外部ライブラリの機能を自分のプログラムで使えるようになります。
Pythonのパッケージ管理ツール「pip」の使い方
pipは、Pythonの追加ライブラリ(外部パッケージ)をインストール・管理・削除するための標準ツールです。
pipを使うことで、Pythonのライブラリ管理がとても簡単になります。コマンドプロンプトやターミナルで上記のコマンドを入力するだけで、必要なライブラリをすぐに使い始めることができます。
ここでは、pipの基本的な使い方を簡潔にまとめます。
1. ライブラリのインストール
pip install ライブラリ名
例:
pip install numpy
指定したライブラリをインターネットからダウンロードしてインストールします。
2. ライブラリのアンインストール
pip uninstall ライブラリ名
例:
pip uninstall numpy
不要になったライブラリを削除します。
3. ライブラリのアップグレード(更新)
pip install --upgrade ライブラリ名
例:
pip install --upgrade numpy
既にインストール済みのライブラリを最新バージョンに更新します。
4. インストール済みライブラリの一覧表示
pip list
現在インストールされているライブラリの一覧が表示されます。
5. バージョン指定でインストール
pip install ライブラリ名==バージョン
例:
pip install numpy==1.22.2
特定のバージョンを指定してインストールできます。
6. 複数ライブラリをまとめてインストール
requirements.txt
というファイルに必要なライブラリをリスト化し、以下のコマンドで一括インストールできます。
pip install -r requirements.txt
7. ライブラリの詳細情報を確認
pip show ライブラリ名
例:
pip show numpy
インストール場所やバージョンなどの情報が確認できます。
8. pip自体のアップグレード
pip install --upgrade pip
pip自体を最新バージョンに更新します。
まとめ
- 外部ライブラリは、Python本体に入っていない追加の便利な機能セット
- インストールしてimportすれば、すぐに使える
- 開発が速くなり、いろんな分野で活用できる
- 代表例:pandas(データ分析)、numpy(数値計算)、matplotlib(グラフ作成)など
外部ライブラリを活用することで、Pythonでできることが大きく広がります!
Python環境構築そのほか
「pip jupyter」をインストール
pip install jupyter
Jupyter Notebookは、Pythonの開発環境として非常に便利なツールです。「pip jupyter」をインストールする主な理由は以下の通りです:
- ウェブブラウザ上でPythonコードを記述・実行できる統合開発環境を提供します。
- プログラム、説明文、実行結果を1つのファイルにまとめて管理できるため、開発効率が向上します。
- データの可視化や機械学習などの作業に適しており、特にデータサイエンス分野で重宝されています。
- コードの共有やデバッグ作業を効率的に行えるため、チーム開発に適しています。
- 数式の記述や報告書作成など、開発以外の業務にも活用できる多機能なツールです。
これらの理由から、Pythonの環境構築時に「pip jupyter」をインストールすることで、より効率的で柔軟な開発環境を整えることができます。
「pip jupyter lab」をインストール
pip install jupyter lab
「pip jupyter lab」をインストールする理由は、Jupyter LabがPythonを使ったデータ分析や機械学習において非常に便利な統合開発環境を提供するためです。以下にその具体的な理由を説明します。
Jupyter Labをインストールする主な理由
- Jupyter Notebookの進化版
- Jupyter LabはJupyter Notebookの後継ツールで、より多機能で使いやすい設計になっています。
- 複数のファイルやタブを同時に開けるため、効率的な作業が可能です。
- 対話型の実行環境
- コードをセル単位で記述・実行でき、その結果を即座に確認可能です。
- データ分析や機械学習のように試行錯誤が必要な作業に最適です。
- データ可視化が簡単
- pandasやmatplotlibなどのライブラリを使ったデータフレーム表示やグラフ描画が簡単です。
- 3Dグラフや複雑なデータも視覚的に確認できます。
- 拡張性
- Jupyter Labは拡張機能(Extensions)を追加することで、自分の作業スタイルに合わせてカスタマイズ可能です。
- 例えば、コード補完、テーマ変更(ダークモード化)なども簡単に設定できます。
- Markdown対応
- コードだけでなく、Markdown形式で説明文やメモを書き込むことができるため、技術ドキュメントの作成や共有にも役立ちます[2][3]。
- 無料で利用可能
- Jupyter Labはオープンソースで提供されており、誰でも無料で利用できます[3]。
- 初心者にも使いやすい
- GUIベースの操作性と直感的なインターフェースで、Python初心者でも簡単に始められます。
まとめ
「pip jupyter lab」をインストールすることで、Pythonを使ったデータ分析や機械学習の作業が効率化されます。特に、コードの実行結果を即座に確認しながら作業できる対話型環境や、拡張機能による柔軟なカスタマイズ性が大きな魅力です。これらの特長から、Jupyter LabはPython開発者にとって必須ともいえるツールとなっています。
VS Codeを使う場合、Jupyter NotebookやJupyter Labを利用するために「pip jupyter」や「pip jupyter lab」をインストールすることは必要です。以下にその理由を説明します。
1. Jupyter機能の利用
- Jupyter Notebookの機能: VS CodeでJupyter Notebookを使用するには、Jupyterのバックエンドが必要です。これにより、セル単位でコードを実行したり、Markdownで文書を作成したりできます。
- 対話的な開発環境: Jupyterをインストールすることで、データ分析や機械学習のプロジェクトにおいて、コードの実行結果を即座に確認しながら作業できます[1][4]。
2. VS Code拡張機能との統合
- 拡張機能のインストール: VS Codeでは、PythonとJupyterの拡張機能をインストールすることで、Jupyter Notebookのファイル(
.ipynb
)を直接開いて編集できます。これにより、VS Codeの便利な機能(コード補完、デバッグなど)を活用しながらJupyterの機能も利用できます[3][4]。
3. 環境設定
- 仮想環境の利用: Jupyterをpipでインストールする際には、仮想環境を作成することが推奨されます。これにより、プロジェクトごとに異なるPythonパッケージやバージョンを管理できるため、開発が効率的になります[1][3]。
まとめ
VS CodeでJupyter NotebookやJupyter Labの機能をフルに活用するためには、「pip jupyter」や「pip jupyter lab」をインストールすることが必要です。これにより、VS Codeの便利な機能とJupyterの対話的な開発環境が組み合わさり、より効率的なPython開発が可能になります。
「pip jupyter lab」を起動してみる
jupyter lab
以下のように、ブラウザで立ち上がれば無事インストール完了となります。
(VS Code(Visual Studio Code)のインストール)
VS CodeはPython開発に非常に便利なツールで私はこちらを利用していておすすめですが、必須ではありません。
初心者からプロフェッショナルまで幅広く利用されている理由はその機能性と柔軟性にありますが、他にも多くの選択肢が存在します。
自分のニーズや好みに応じて最適な環境を選ぶことが重要です。
VS Code(Visual Studio Code)は、Python開発において非常に人気のあるエディタですが、必須ではありません。
以下に、VS CodeがPython開発においてどのように役立つか、また他の選択肢について説明します。
VS Codeの利点
拡張機能の豊富さ:
- Python用の拡張機能をインストールすることで、シンタックスハイライト、自動補完、デバッグ機能など多くの便利な機能を利用できます[1][2]。
軽量で使いやすい:
- VS Codeは軽量でありながら強力な機能を持ち、初心者でも扱いやすいインターフェースが魅力です[2][4]。
統合ターミナル:
- コードを実行するためのターミナルが統合されており、スムーズに開発作業を進めることができます[3][4]。
デバッグ機能:
- デバッグが容易で、エラーを迅速に特定し修正できるため、プログラミング学習やプロジェクト開発に役立ちます[3][4]。
無料で利用可能:
- VS Codeは無料で提供されており、誰でも気軽に始められます[2][3]。
他の選択肢
他のIDEやエディタ:
PyCharmやJupyter NotebookなどもPython開発に適した環境です。これらは特定の用途や好みに応じて選択できます。
例えば、PyCharmは強力なIDEであり、大規模なプロジェクトに向いています。一方で、Jupyter Notebookはデータ分析や可視化に特化しています。
テキストエディタ:
メモ帳やSublime Textなどの軽量テキストエディタでもPythonプログラミングは可能ですが、VS Codeのような便利な機能はありません。