正月休暇長かったですね。正月休暇でPythonの構文忘れていませんか?私は忘れました。orz…
記憶の引き出し用に構文メモを作成しました。
変数の宣言
pythonでは変数に値を代入すると型は自動振り分けされるが、明示的に型を指定することも可能
int型の宣言
a=1
print(type(a)) # <class 'int'>
# int型の明示
a: int = 1
str型の宣言
b="b"
print(type(b)) # <class 'str'>
b='b'
print(type(b)) # <class 'str'>
# ”でも’でもよい
# str型の明示
a: str = "a"
list型の宣言
c=[1,2,3]
print(type(c)) # <class 'list'>
print(type(c[0])) # <class 'int'>
c=["a","b","c"]
print(type(c)) # <class 'list'>
print(type(c[0])) # <class 'string'>
空のListを宣言
l=[]
print(type(l)) # <class 'list'>
値が入っている配列を用意する
li=[1]*5 # 1 が入っている箱を5つ用意する
print (li) # [1, 1, 1, 1, 1]
print (type(li)) # <class 'list'>
# 配列の値は後から変更可能
li[1] = 2
print (li) # [1, 2, 1, 1, 1]
特殊な定義
# Forを使って一気に配列を作成
li=[i for i in range(1, 6)] # [1, 2, 3, 4, 5]
# Rangeを使って一気に配列を作成
li = list(range(0,10,2)) # [0, 2, 4, 6, 8]
標準入力(input)
キーボードで入力した値をそのまま変数に入れます。(c言語のscan関数と同じ)
inp = input()
123
print(inp)
123
inp = input("要素数を入力してください: ")
要素数を入力してください: 234
print(inp)
234
標準出力(print)
pythonでは、printの後に()をつけないとエラーになります。
a=1
print(a)
a
a=1
b="b"
print (a ,"and", b)
1 and b
マッピング処理
map関数による分割
スカラ変数をList型に変換してくれる。変換する型は指定する必要がある。
b="12345"
li=map(int,b) # strに分割することも可
print(list(li)) # [1, 2, 3, 4, 5]
スカラ型で受け取ることもできる(要素数に注意)
b=[2,3,4]
c,d,e = map(int,b)
print(e,":",d,":",c)
4 : 3 : 2
split関数による分割
b="1:2:3:4:5"
li=b.split(":") # 区切り文字を指定
print(list(li))
['1', '2', '3', '4', '5']
スカラ型で受け取ることもできる(要素数に注意)
b="2@3@4"
c,d,e = b.split("@")
print(c,":",d,":",e)
2 : 3 : 4
数値の処理
小数点以下がある数値は、設定しなければfloatで演算
a=10.1
print (a) # 10.1
print (type(a)) # <class 'float'>
●小数点以下切り捨て
print (int(a)) # 10
●小数点以下切り上げ
import math
print (math.ceil(a)) # 11
●指定桁数切り捨て
n = 3.14159
rn = round(n, 2)
print(rn) # 3.14
●表示フォーマットで桁数を指定する
n = 3.14159
print(f"{n:.2f}") # 3.14
文字列の処理
●連結
print("abc" + "def") # abcdef
print("abc" * 3) # abcabcabc
str = "+".join("abc")
print(str) # a+b+c
●インデックス取得
str = "abcdef"
first_str = str[0] # 最初の文字を取得
last_str = str[-1] # 最後の文字を取得
●変換 List型からスカラ
list=["A","B","C"]
s = " ".join(list) # A B C
※int 型が入っているとエラー
list=["A","B","C",4]
print(" ".join(list))
Traceback (most recent call last):
File "", line 1, in
TypeError: sequence item 3: expected str instance, int found
●文字列のインデックス指定取得
str= "ABCDE"
print (str[2:3]) # CD
#3~4番目を取得
●replace関数
構文 REPLACE_STRING = (String).replace([FROM_STR,TO_STR])
str = "A_C"
print (str.replace("_","B")) # ABC
print (str) # A_C
●大文字 <-> 小文字変換
a = "abc"
print(a.upper()) # "ABC"
print(a.lower()) # "abc"
●検索
if("x" in "abcdefg") -> False
if("A" in "abcdefg") -> True
if("a" in "abcdefg") -> True
print("abcdefg".find("A".lower()) -> 0 #あるよ
print("Abcdefg".find("A".lower()) -> -1 #ないよ
辞書型(Dictionary型)の処理
●定義、使い方
dic ={"A":"4" ,
"B":"6" ,
"C":"2" ,
"D":"2" ,
"E":"3" }
print (dic.get('A')) # 4
定義 ※key はint string どちらも可能
●key一覧
print (dic.items()) # dict_items([('A', '4'), ('B', '6'), ('C', '2'), ('D', '2'), ('E', '3')])
●要素の追加
dic["F"] = "5"
print (dic) # {'A': '4', 'B': '6', 'C': '2', 'D': '2', 'E': '3', 'F': '5'}
●要素の削除
del dic["F"]
print (dic) # {'A': '4', 'B': '6', 'C': '2', 'D': '2', 'E': '3'}
●pop(getとdelを同時に行う)
rv = dic.pop("C")
print (dic) # {'A': '4', 'B': '6', 'D': '2', 'E': '3'} # "C"が削除されている
●ソートしてdic -> List
Valueで昇順ソート (reverse=Trueで降順)
sorted_list = sorted(dic.items(), key=lambda item: int(item[1]), reverse=False)
print(sorted_list) # [('C', '2'), ('D', '2'), ('E', '3'), ('A', '4'), ('B', '6')]
●Keyで昇順ソート (reverse=Trueで降順)
sl = sorted(dic.items(), key=lambda item: item[0], reverse=False)
print(sl)
[('A', '4'), ('B', '6'), ('C', '2'), ('D', '2'), ('E', '3')]
繰り返し(For)文
●構文
for [TEMP] in [range(START,STOP,STEP(def:1))]:
# ループ処理
●回数指定繰り返し
for i in range(5): # :を忘れがち
… print(i)
0
1
2
3
4
●10~20(未満)の偶数
for i in range(10,20,2):
… print(i) # 10 12 14 16 18
# stepに負数を指定すれば逆もできる
●listの中身分だけ繰り返し
li=[1,2,3,4]
for i in li:
… print(i)
…
1
2
3
4
●dicのアイテム数だけ繰り返し
for k, v in dic.items():
… print(f"{k},{v}")
…
A,4
B,6
C,2
D,2
E,3
条件(IF)文
●構文
if [条件1]:
# 条件1が真の処理
elif [条件2]:
# 条件2が真の処理
else:
# 真以外の処理
●例
x = 10
if x>10:
print("xは10より大きい")
elif x>5:
print("xは5より大きく10以下")
else:
print("xは5以下")
switch文
python3.10以降で実装
value = 2
match value:
case 1:
print("Case 1")
case 2:
print("Case 2")
case 3:
print("Case 3")
case _:
print("Default case")
List型
●リスト内包表記によるlistの値変更
ns = [1, 2, 3, 4, 5]
dl = [x * 2 for x in ns]
print(dl)
[2, 4, 6, 8, 10]
●要素の追加
ns = [1, 2, 3, 4, 5]
ns.append(6)
print (ns) # [1, 2, 3, 4, 5, 6]
●listの挿入
li = [1,2]
li.insert(1,4) # index1に 4 を挿入
print (li) # [1, 4, 2]
●要素の削除 remove
li = [1,2]
li.remove(1) # 削除したいindexを指定
print(li) # [2]
●pop
li = [1,2]
print(li.pop(1)) # 2 # get(index)した値をlistから削除
print(li) # [1]
●最大値
print(max(ns)) # 5
●最小値
print(min(ns)) # 1
●合計値
print(sum(ns)) # 15
●要素数
print(len(ns)) # 5
●昇順ソート
print(sorted(ns)) # [1, 2, 3, 4, 5]
●降順ソート
ns.reverse()
print(ns) # [5, 4, 3, 2, 1]
●条件(ALL) AND 演算
# すべてTrueならTrue
li = [True, True, True]
print(all(li)) # True
li = [True, True, False]
print(all(li)) # False
●条件(ENY) OR 演算
# どれかがTrueならTrue
li = [False, False, True]
print(all(li)) # True
li = [False, False, False]
print(all(li)) # False
●カウント
指定した値が何回出てくるか
li = [1, 2, 2, 3, 3, 3]
print(li.count(2)) # 2
●インデックス
li = ["AA", "DD", "EE", "GG", "DD", "BB"]
print (li.index("DD")) # 1 ※2番目の要素
●コピー
li = [1,2]
li2 = li.copy()
print(li2) # [1, 2]
●clear 全要素の削除
li = [1,2]
li.clear()
print(li) # [] # listが削除された
関数の定義
●構文
def 関数名([引数1,引数2…]):
関数内の処理
※デフォルト引数を指定可能
def add(a=2):
return a*2
●例
def add(a, b):
… return a + b
r = add(2,3)
print (r) # 5
●関数内には独自のスコープが割り当てられる
def add(a, b):
… a=1 # ここで引数を変更しても
… return a + b
a=2
print(add(a,3))
print(a) # 2 # ※グローバル変数は1にならない
●listによる参照引き渡しを行うと、関数内でも値の変更ができる
li=[3]
def add(p):
… p[0]=5
…
print (li) # [3]
add(li)
print (li) # [5]
クラスの宣言
class Player:
def walk(self):
print ("11")
Player1 = Player()
Player1.walk()
class Player:
def init(self,job):
self.job = job
def walk(self):
print ("11" + self.job)
player = Player("aaa")
player.walk()
サンプル(よく使う処理)
●string -> list化
input_line = input()
input_list = list(input_line)
●split取得
input_line = input()
input_list = input_line.split(" ")
●1文字目の取得
input_line = input()
input_list = list(input_line)
first_str = input_list[0]
res_flg = False
●listからスカラ
li=["A","B","C"]
" ".join(li)
"A B C"
●数値list を一覧表示
li = [1,2,3,4,5]
print(" ".join(str(ss) for ss in li))
1 2 3 4 5
●深層コピー(参照をしない)
import copy
co_list = copy.deepcopy(or_list)