pythonの基礎を備忘録として残しておく
summary
x = ['a', 'b', 'c']
for i in x: # 配列を読み出す
for i in range(3): # 0〜2を読み出す
for i, j in enumerate(x): #インデックスと配列を読み出す
for i, j, k in zip(x, y, z) # 複数の配列を読み出す
# x = {'a':1, 'b':2, 'c':3}
for k in x: # キーを読み出す
for v in x.values(): # バリューを読み出す
for k, v in x.items(): # キーとバリューを読み出す
x = [1, 2, 3]
l = []
for i in x:
l.append(i*3)
# 全ての要素を3倍(ノーマル)
[i*3 for i in x]
# 全ての要素を3倍(内包表記)
x = [1, '2', 3]
l = []
for i in x:
if isinstance(i, str):
continue
l.append(i)
# strを除く
[i for i in x if not isinstance(i, str)]
# strを除く(内包表記)
func = lambda x:print('引数は'+ x)
func = lambda x="未入力": print('引数は' + x)
(lambda x="未入力": print('引数は' + x))('整数')
(lambda x="未入力": print('引数は' + x))()
1. for 文
for 文は配列から要素を順次読み出して処理を行います。配列には、文字列、リスト、辞書、タプル、セットが該当します。
for 変数 in 配列:
処理
具体的な例を見て行きましょう。リストを読み込み、処理をする。
x = ['a', 'b', 'c']
for i in x:
print(i)
# 出力結果
a
b
c
range関数を使ってインデックスを読み込み、処理をする。range(初期値, 回数, 増分)で、初期値と増分は記載しなければ、初期値=0、増分=1です。
for i in range(3):
print(i)
# 出力結果
0
1
2
enumerate関数を使って、インデックスとリストを両方読み込み、処理をする。
x = ['a', 'b', 'c']
for i, j in enumerate(x):
print(i, j)
# 出力結果
0 a
1 b
2 c
zip関数を使って、2種類以上のリストを読み込み、処理をする。
x = ['a', 'b', 'c']
y = ['L', 'M', 'S']
z = ['X', 'Y', 'Z']
for i, j, k in zip(x, y, z)
print(i, j, k)
# 出力結果
a L X
b M Y
c S Z
辞書 {キー1:バリュー1, キー2:バリュー2, ...} からキーを読み出す。普通に書くとキーを読み出します。
# x = {'a':1, 'b':2, 'c':3}
for k in x:
print(k)
# 出力結果
a
b
c
values関数を使って、辞書からバリューを読み出す。
x = ['a':1, 'b':2, 'c':3]
for v in x.values():
print(v)
# 出力結果
1
2
3
items関数を使って、辞書からキーとバリューを読み出す。
x = ['a':1, 'b':2, 'c':3]
for k, v in x.items():
print(k, v)
# 出力結果
a 1
b 2
c 3
2. 内包表記
for 文には内包表記という便利なものがあります。
[iの処理 for i in 配列]
具体的な例を通常表記と内包表記の2つの場合で、みて行きましょう。
リストを与えると全ての要素を3倍にして返す関数(例:[1, 2, 3] → [3, 6, 9])
def func(x):
l = []
for i in x:
l.append(i*3)
return l
def func(x):
return[i*3 for i in x]
整数と整数の文字列の混じる要素のリストを与えると、全ての要素を整数にして返す関数(例:[1, '2', 3] → [1, 2, 3])
def func(x):
l = []
for i in x:
l.append(int(i))
return l
def func(x):
return [ int(i) for i in x]
整数と整数の文字列の混じる要素のリストを与えると、文字列を取り除いたリストを返す関数(例:[1, '2', 3] → [1, 3]
def func(x):
l = []
for i in x:
if isinstance(i, str):
continue
l.append(i)
return l
def func(x):
return[i for i in x if not isinstance(i, str)]
3. 無名関数(lambda式)
lambda式を使うと、def文を使わずに関数を定義できます。基本構文は、以下の様です。
lambda 引数:処理
具体的な例を記します。
func = lambda x:print('引数は'+ x)
func('整数')
# 出力
引数は整数
lambda式で引数xが設定されている場合は、引数がないとその設定が有効になる。
func = lambda x="未入力": print('引数は' + x)
func('整数')
func()
# 出力
引数は整数
引数は未入力
lambda式を( )で囲って、引数を( )で後ろにくっ付けるやり方もある。
(lambda x="未入力": print('引数は' + x))('整数')
(lambda x="未入力": print('引数は' + x))()
# 出力
引数は整数
引数は未入力