乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

Python

Pythonではdictionary型として
他の言語にもあるものが使えます

辞書型は
キー(key) : 値(value)
構造で出来ており
キーは一意でなければいけません

値をなんらかのキーで関連付けて保持するために使います

作り方は
変数名 = { 'key' : 'value'}
とします

変数に値を格納する際は
変数名[ 'key' ] = value
同じキーの場合は上書き、無ければ追加になります
>>> otu = {'ja': 409, 'sa': 413}
>>> otu['gu'] = 412
>>> otu
{'sa': 413, 'gu': 412, 'ja': 409}
 
リスト型から辞書型を作ることもできます
2つのリストをzip関数とdict関数で変換します
この場合はキーと値が同じ個数しか変換されません
>>> keys = ['cat', 'dog', 'mouse']
>>> values = ['nyan', 'wan', 'chu']
>>> dict(zip(keys, values))
{'cat': 'nyan', 'dog': 'wan', 'mouse': 'chu'}
リストでなくタプルからでも変換は可能です

辞書からリストにする場合は
keysメソッドを使います
>>> otu = {'ja': 409, 'ir': 412 ,'sa': 413}
>>> otu
{'ir': 412, 'ja': 409, 'sa': 413} >>> list(otu.keys()) ['sa', 'ir', 'ja'] >>> sorted(otu.keys()) ['ir', 'ja', 'sa']

要素から値を取り出す場合は
変数名[ 'key' ]
items()メソッドを使うことでキーと要素を同時に取り出せます
>>> otu = {'ja': 409, 'ir': 412 ,'sa': 413}
>>> for k, v in otu.items():
>>> 	print(k, v)
sa 413
ir 412
ja 409





 

Pythonでは集合を扱うためのデータ型があります

和 (union)
積 (intersection)
差 (difference)
対称差 (symmetric difference)

これらを扱うためのデータセットで
値の重複が有りません

set型を作る際は set([ 値,値 ]) とします 
>>> aa = set([2,2,3,4,5]) #重複は排除される
>>> aa
{2,3,4,5}
集合の計算を行う場合はこうなります
a = set([1,2,3,4,3,2])
b = set([3,4,5]) 
print (a - b) # 差集合:aにあってbにないもの
print (a | b) # 和集合:aとbの和
print (a & b )# 積集合:aとb双方にあるもの
print (a ^ b) # 商集合:aとbどちらかにしかないもの
{1, 2}
{1, 2, 3, 4, 5}
{3, 4}
{1, 2, 5}







リスト型と似ていますが
タプル(tuple) 型があります

リストとの違いは一度作ったら
変更できないことです

タプルを作るには ( ) で括ります
>>> tap = (1,2,3)
>>> tap
(1,2,3)
>>> tap[2]=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # but they can contain mutable objects: 
タプルの中身を操作してもエラーが出て変更は出来ないです
変更されたくないデータを取り扱う際に使うと良いでしょう




list型はPythonのデータ型で
複数の値をまとめるのに使います

通常は同じ型同士を入れます
[ ] で囲み , で区切ります

数値はこう
>>> list1 = [1, 4, 9, 16, 25]
>>> list1
[1, 4, 9, 16, 25]

文字列なら

>>> list1 = ['pen','pineapple','apple','pen']
>>> list1
['pen', 'pineapple', 'apple', 'pen']

 
これの中身を取り出す場合はインデックスを使います
>>> list1 = ['pen','pineapple','apple','pen']
>>> list1[1:3] #2番目と3番目
['pineapple', 'apple']

リストの個数を測る場合はlen関数を使います
>>> list1 = ['pen','pineapple','apple','pen']
>>> len(list1)
4

リストの中身への代入はこう
元と違う型も代入できます
>>> list1 = ['pen','pineapple','apple','pen']
>>> list1[2] = 100
>>> list1
['pen', 'pineapple', 100, 'pen']

中身の順番を入れ替えられます
>>> sales = [50,100,80,45]
>>> sales.sort() # 昇順
[45, 50, 80, 100]
>>>
sales.reverse() # 降順
[100, 80, 50, 45]
一旦代入した後に、大きい順で使いたい場合に
ソートを行います


文字列を区切ってリストにしたい場合はこう
繋げることもできます
>>> day = "2013/12/15"
>>> list1 = day.split("/") # / で区切る
>>> list1
['2013', '12', '15']
>>> print ("-".join(list1)) # - で連結する
2013-12-15

その他、リストで使える関数(メソッド)について
append   
list1 = [1,2,3,4,5]
#リストの末尾に要素を一つ追加
list1.append(6) 
list1
[1,2,3,4,5,6]

extend
list1 = [1,2,3,4,5]
list2 = [6,7,8,9]
#リスト中のすべての要素を対象のリストに追加
list1.extend(list2) 
list1
[1,2,3,4,5,6,7,8,9]


insert
list1 = [1,2,3,4,5]
#指定した位置に要素を挿入
list1.insert(2, 10)
list1 
[1,2,10,3,4,5]

remove
list1 = [1,2,3,4,5]
#値を持つ最初の要素を削除 該当する項目がなければエラー
list1.remove(2)
list1
[1,3,4,5]

pop
list1 = [1,2,3,4,5]
#リスト中の指定された位置にある要素をリストから削除して、その要素を返す
#インデックス指定が無ければ末尾の要素を操作
print(list1.pop(3))
print(list1)
4
[1, 2, 3, 5]


clear
list1 = [1,2,3,4,5]
#リスト中の全ての要素を削除
list1.clear()
list1
[]


index
list1 = [1,2,3,4,5]
#リスト中で、値 を持つ最初の要素のインデクスを返す
list1.index(4)
3


count
list1 = [1,2,3,4,5,6,6]
#リストでの 値の出現回数を返す
list1.count(6)
2

さて
ここからはPythonの基礎を学習しましょう

jupyter notebookを起動して
色々打ち込んで試しながら覚えていきましょう


数値

まずはJupyterに入力してみましょう
57


数値を入力して四則演算ができます。
>>> 2 + 3 #足し算
5
>>> 52 - 5*7 #引き算とかけ算 * 
17
>>> (54 - 5*6) / 4 #除算 / 
6.0
>>> 9 / 5 #除算は小数点が返る
1.8
Python3では除算の際に小数点になり
Python2では整数値になります
演算子  + - * /  は他の言語と同じ動きです
括弧を使って計算するのは数式と同じです

Pythonでは整数はint型
小数はfloat型となります

#より右側はコメントとなり、コードでは無視されます
コードの説明書きをしたりするのに使います


剰余は割り算の余りを計算します
除算の際に小数点を切り捨てたい場合は // 演算子を使います
>>> 17 / 3   
5.666666666666667
>>>
>>> 17 // 3  # 小数点を切り捨てる //
5
>>> 17 % 3  # 剰余を計算する
2
>>> 5 * 3 + 2  # 乗算が優先
17


** 演算子でn乗(べき乗)が計算できます
>>> 5 ** 3  # 5の3乗
125
>>> 2 ** 8  # 2の8乗
256



変数

プログラム言語では考え方として
値を格納しておく概念があります
それが変数です

変数は数値や文字列等、値を格納しておくものです
変数名 = 値
これで代入ができます
>>> hen = 55
>>> tai = 5 * 11
>>> hen * tai
3025
変数に名前をつけるときは以下のルールに従います
1) 1文字目は英文字かアンダーバー(_)
2) 2文字目以降は英数文字、アンダーバー
3) 予約語は使用できない
4) 大文字と小文字は区別される
次のようにつけられます

isono
Katuo_Isono
_sazae
familyName
ikura1 
上記では例としてあげていますが
日本語をローマ字表記のものはダサいので
ちゃんとした英単語を元にして作るのが良いでしょう

予約語はあらかじめ
プログラミング言語が使用してしまっている英単語です
ここでは取り上げず、後述します

数学の数式と違い
= は値を代入に使います

消費税計算をする場合などはこんな感じ
>>> tax = 1.08
>>> price = 1000
1080.0

変数に同じ変数を代入もできます
その場合は結果を代入したことになります
>>> price = 1000
>>> price = 1000 + price
>>> price
2000

 , を使うと複数の変数に一度に代入できます
左辺 = 右辺
とします
>>> a,b = 1,2
>>> a + b
3

type関数で変数の中身がどんな型なのかを
調べる事ができます

>>> a,b = 1,2
>>> type(a+b) 
int

文字列

変数には文字列も格納できます
代入の際には単引用符 ' ' 
もしくは二重引用符 " "
で囲みます

引用符を文字列内で使いたい場合は \ を使ってエスケープします
jupyter notebookでは変数の値を表示できますが \ がそのまま出てしまうので
表示を変えたい場合はprint関数を使います
>>> '"I\'m," pen.'
'"I\'m," pen.'
>>> print( '"I\'m," pen.')
 "I'm," pen.

文字列変数に数値を掛け合わせると回数分計算されます
>>> muda = "無駄"
>>> muda * 10 '無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄'

文字列や変数を連結したい場合は + を使う
>>> word = 'Python'
>>> word + 'otu'
'pythonotu'

文字列をインデックス表記でき、1文字を抜き出せます
この場合の長さは0から始まり左からの長さとなり
- をつけると右から読んだことになります
>>> word = 'otuPython'
>>> word[0]  # 始めの文字
'o'
>>> word[-1]  # 最後の文字
'n'

また開始と終了のインデックスも使えます
w[:i] + w[i:]
は等しくなります
>>> word = 'otupython'
>>>
word[0:5] #最初から5番目まで
'otupy' >>> word[4:] #5番目以降 'ython' >>> word[-2:] #最後の2文字 'on'

文字列関数を使って文字列の中身をチェックします
>>> word = 'otupython'
>>>
len(word)
9 >>> word.find("p") #pが何番目にあるか 3




このページのトップヘ