Python の便利な機能

便利な関数(パッケージ)

プログレスバーを表示でき(出力は省略),
from tqdm import tqdm# プログレスバーの表示
for _x in tqdm(range(10**8)):
    pass
zip関数(複数のリストを同時に取得)は,
z1 = [1,2,3,4,5]
z2 = [11,12,13,14]
for i,j in zip(z1,z2): # zip関数
    print(i,j)
1 11
2 12
3 13
4 14
また,enumerate関数(要素とインデックスを同時に取得)は,
s = ['A', 'B', 'C', 'D']
for i,n in enumerate(s, start=1): # enumerate関数(要素とインデックス)
    print(i,n)
1 A
2 B
3 C
4 D

日付と時間

モジュールをインポート
from datetime import date, time, datetime
今日の日付が出力される(出力は省略).
date.today() # 日付
変数にもでき(出力は省略),
d = date.today()
print(d)
変数に日付を代入する場合は,
d = date(2023,3,30)
d
datetime.date(2023, 3, 30)
変数から曜日もわかる.
d.weekday() # 曜日(月:0, ..., 土:5, 日:6)
3
現在の時刻は,
d2 = datetime.now() # 現在の時刻
d2
datetime.datetime(2023, 3, 30, 16, 1, 37, 151561)
日付のみの場合は,
d2.date() # 日付のみ
datetime.date(2023, 3, 30)
時刻のみ場合は,
d2.time() # 時刻のみ
datetime.time(16, 1, 37, 151561)
時刻を設定する場合は,
time(1,2,3,4)
datetime.time(1, 2, 3, 4)

日本の祝日

まず,パッケージをインストール(pip install jpholiday). そして,モジュールをインポートして,
import jpholiday # 日本の祝日
from datetime import datetime
d = datetime(2022,10,10)
jpholiday.is_holiday(d)
True
jpholiday.is_holiday_name(d)
'スポーツの日'
jpholiday.year_holidays(2023)
[(datetime.date(2023, 1, 1), '元日'),
 (datetime.date(2023, 1, 2), '元日 振替休日'),
 (datetime.date(2023, 1, 9), '成人の日'),
 (datetime.date(2023, 2, 11), '建国記念の日'),
 (datetime.date(2023, 2, 23), '天皇誕生日'),
 (datetime.date(2023, 3, 21), '春分の日'),
 (datetime.date(2023, 4, 29), '昭和の日'),
 (datetime.date(2023, 5, 3), '憲法記念日'),
 (datetime.date(2023, 5, 4), 'みどりの日'),
 (datetime.date(2023, 5, 5), 'こどもの日'),
 (datetime.date(2023, 7, 17), '海の日'),
 (datetime.date(2023, 8, 11), '山の日'),
 (datetime.date(2023, 9, 18), '敬老の日'),
 (datetime.date(2023, 9, 23), '秋分の日'),
 (datetime.date(2023, 10, 9), 'スポーツの日'),
 (datetime.date(2023, 11, 3), '文化の日'),
 (datetime.date(2023, 11, 23), '勤労感謝の日')]

ラムダ式(無名関数)

関数の定義は,
squared = lambda x: print(x**2)
計算は通常の関数と同じように,
squared(2)
4
複雑な変数もでき,
l = list(map(lambda x: x**2, range(10)))
l
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
複雑な実引数も表現できる(省略).

可変長引数

def func(*a):
    print(a)
実引数の要素数は任意にでき,
func(1,2,3)
(1, 2, 3)
引数の順番は,可変長引数を後にすること.
def func2(c, *a): # 可変長引数が後
    print(c)
    print(a)
例えば,
func2(10,'a',3,4.5)
10
('a', 3, 4.5)
可変長引数を前にもできる.
def func3(*a, c): # 可変長引数が先
    print(a)
    print(c)
この場合,キーワード引数とする必要があり,
func3('a',3,4.5, c=100) # 可変長引数が先の場合は,キーワード引数が必要
100
('a', 3, 4.5)

実数(浮動小数点数)の範囲

浮動小数点数の最大値は,
import sys
max_f = sys.float_info.max
print(max_f, max_f*1.1)
print(type(max_f))
1.7976931348623157e+308 inf
浮動小数点数の最小値は,
print(-max_f, -max_f*1.1)
-1.7976931348623157e+308 -inf
print(-1.8e+308)
-inf
x = float('-inf')
print(x)
-inf
x == float('-inf')
True
x = float('inf') / float('inf')
print(x)
nan
nan判定ができる.
import math
x = float('inf') / float('inf')
math.isnan(x) # nan判定
True
Numpy を用いれば,配列に対する計算が行え,
import numpy as np
xx = np.linspace(0.0, 1.0, 2)
yy = -1.0/xx
yy = np.append(yy,0.0/xx)
yy
array([-inf,  -1.,  nan,   0.])
配列に対する判定も可能となる.
np.isnan(yy) # 配列に対するnan判定
array([False, False,  True, False])