import math
$e^2$
math.exp(2)
7.38905609893065
$2^6$
math.pow(2, 6)
64.0
$\log 7.38905609893065$
math.log(7.38905609893065)
2.0
$\log_2 64$
math.log(64, 2)
6.0
$\sqrt{25}$
math.sqrt(25)
5.0
$\sin \frac{\pi}{4}$
math.sin(0.25 * math.pi)
0.7071067811865475
$\cos \frac{\pi}{4}$
math.cos(0.25 * math.pi)
0.7071067811865476
$\tan \frac{\pi}{4}$
math.tan(0.25 * math.pi)
0.9999999999999999
$|-2.5|$
math.fabs(-2.5)
2.5
$\lfloor -2.5 \rfloor$
math.floor(-2.5)
-3
$\lceil -2.5 \rceil$
math.ceil(-2.5)
-2
import random
乱数生成器のシードを設定する(生成される乱数の再現性を担保するためにも用いられる)。
random.seed(1)
1から10までの範囲で整数の乱数を生成。
random.randint(1, 10)
3
0から1の範囲の一様分布からランダムに値を取り出す。
random.random()
0.5692038748222122
1から10の範囲の一様分布からランダムに値を取り出す。
random.uniform(1, 10)
7.84866200421318
平均50、標準偏差50の正規分布からランダムに値を取り出す。
random.gauss(50, 25)
61.55187661776456
トランプのカードを表すリストを作成する。
cards = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
cards
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
リストから一つの要素をランダムに取り出す。
random.choice(cards)
'1'
リストから要素を3個取り出す。
random.sample(cards, 3)
['7', 'K', '10']
リストの要素をランダムに並び替える。
random.shuffle(cards)
cards
import operator
以下のデータを整列させたい。
D = [
['Gunma', 6362, 1919014],
['Tochigi', 6408, 1927754],
['Ibaraki', 6097, 2849494],
]
県名の辞書順でソートするために、引数keyにソートで用いる要素を取り出す関数を与える。
sorted(D, key=lambda x: x[0])
[['Gunma', 6362, 1919014], ['Ibaraki', 6097, 2849494], ['Tochigi', 6408, 1927754]]
これは、operator.itemgetterを使って以下のように書ける。
sorted(D, key=operator.itemgetter(0))
[['Gunma', 6362, 1919014], ['Ibaraki', 6097, 2849494], ['Tochigi', 6408, 1927754]]
今度は、リストの要素が辞書オブジェクトとなっている以下のデータを整列させたい。
D = [
{'name': 'Gunma', 'area': 6362, 'population': 1919014},
{'name': 'Tochigi', 'area': 6408, 'population': 1927754},
{'name': 'Ibaraki', 'area': 6097, 'population': 2849494},
]
面積の小さい順でソートするために、引数keyにソートで用いる要素を取り出す関数を与える。
sorted(D, key=lambda x: x['area'])
[{'name': 'Ibaraki', 'area': 6097, 'population': 2849494}, {'name': 'Gunma', 'area': 6362, 'population': 1919014}, {'name': 'Tochigi', 'area': 6408, 'population': 1927754}]
これは、operator.itemgetterを使って以下のように書ける。
sorted(D, key=operator.itemgetter('area'))
[{'name': 'Ibaraki', 'area': 6097, 'population': 2849494}, {'name': 'Gunma', 'area': 6362, 'population': 1919014}, {'name': 'Tochigi', 'area': 6408, 'population': 1927754}]
今度は、リストの要素がクラスのオブジェクトとなっている以下のデータを整列させたい。
class Prefecture:
def __init__(self, name='', area=0, population=0):
self.name = name
self.area = area
self.population = population
def __repr__(self):
return "Prefecture('{}', {}, {})".format(self.name, self.area, self.population)
D = [
Prefecture('Gunma', 6362, 1919014),
Prefecture('Tochigi', 6408, 1927754),
Prefecture('Ibaraki', 6097, 2849494)
]
面積の小さい順でソートするために、引数keyにソートで用いる要素を取り出す関数を与える。
sorted(D, key=lambda x: x.area)
[Prefecture('Ibaraki', 6097, 2849494), Prefecture('Gunma', 6362, 1919014), Prefecture('Tochigi', 6408, 1927754)]
これは、operator.attrgetterを使って以下のように書ける。
sorted(D, key=operator.attrgetter('area'))
[Prefecture('Ibaraki', 6097, 2849494), Prefecture('Gunma', 6362, 1919014), Prefecture('Tochigi', 6408, 1927754)]
import functools
def w(n=3, c='w'):
for i in range(n):
print(c, end='')
fu = functools.partial(w, c='フ')
fu(3)
フフフ
笑 = functools.partial(w, c='笑')
笑(5)
笑笑笑笑笑
import itertools
s = 'para para paradise'
for c, n in itertools.groupby(s):
print(c, n)
p <itertools._grouper object at 0x7f7a945b70d0> a <itertools._grouper object at 0x7f7a945b77f0> r <itertools._grouper object at 0x7f7a945b7970> a <itertools._grouper object at 0x7f7a945b7a90> <itertools._grouper object at 0x7f7a945b7be0> p <itertools._grouper object at 0x7f7a9466ef10> a <itertools._grouper object at 0x7f7a9465a760> r <itertools._grouper object at 0x7f7a9465a9d0> a <itertools._grouper object at 0x7f7a94660880> <itertools._grouper object at 0x7f7a945b7d00> p <itertools._grouper object at 0x7f7a945b7ee0> a <itertools._grouper object at 0x7f7a945b7e80> r <itertools._grouper object at 0x7f7a945ad100> a <itertools._grouper object at 0x7f7a945ad280> d <itertools._grouper object at 0x7f7a945ad400> i <itertools._grouper object at 0x7f7a945ad580> s <itertools._grouper object at 0x7f7a945ad700> e <itertools._grouper object at 0x7f7a945ad880>
import collections
import datetime
datetime.datetime.now()
datetime.datetime(2021, 4, 27, 21, 40, 46, 159665)
datetime.datetime.fromisoformat('2021-04-01T00:00:00')
datetime.datetime(2021, 4, 1, 0, 0)
datetime.datetime.strptime('2021年4月1日12時22分33秒', '%Y年%m月%d日%H時%M分%S秒')
datetime.datetime(2021, 4, 1, 12, 22, 33)
dt = datetime.datetime.now()
dt.isoformat()
'2021-04-29T09:26:16.397940'
dt.strftime('%Y年%m月%d日%H時%M分%S秒')
'2021年04月29日09時26分16秒'
dt0 = datetime.datetime(2021, 1, 1)
now = datetime.datetime.now()
delta = now - dt0
delta
datetime.timedelta(days=118, seconds=34158, microseconds=695087)
now = datetime.datetime.now()
delta = datetime.timedelta(days=30)
now + delta
datetime.datetime(2021, 5, 29, 9, 30, 11, 985605)
import csv
D = {
'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'},
'神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'},
'千葉': {'yomi': 'ちば', 'en': 'Chiba'},
'埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}
}
with open('sample.csv', 'w') as fo:
writer = csv.writer(fo)
for pref, info in D.items():
writer.writerow((pref, info['yomi'], info['en']))
%cat sample.csv
東京,とうきょう,Tokyo 神奈川,かながわ,Kanagawa 千葉,ちば,Chiba 埼玉,さいたま,Saitama
import json
D = {
'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'},
'神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'},
'千葉': {'yomi': 'ちば', 'en': 'Chiba'},
'埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}
}
print(json.dumps(D))
{"\u6771\u4eac": {"yomi": "\u3068\u3046\u304d\u3087\u3046", "en": "Tokyo"}, "\u795e\u5948\u5ddd": {"yomi": "\u304b\u306a\u304c\u308f", "en": "Kanagawa"}, "\u5343\u8449": {"yomi": "\u3061\u3070", "en": "Chiba"}, "\u57fc\u7389": {"yomi": "\u3055\u3044\u305f\u307e", "en": "Saitama"}}
print(json.dumps(D, ensure_ascii=False))
{"東京": {"yomi": "とうきょう", "en": "Tokyo"}, "神奈川": {"yomi": "かながわ", "en": "Kanagawa"}, "千葉": {"yomi": "ちば", "en": "Chiba"}, "埼玉": {"yomi": "さいたま", "en": "Saitama"}}
print(json.dumps(D, ensure_ascii=False, indent=2))
{ "東京": { "yomi": "とうきょう", "en": "Tokyo" }, "神奈川": { "yomi": "かながわ", "en": "Kanagawa" }, "千葉": { "yomi": "ちば", "en": "Chiba" }, "埼玉": { "yomi": "さいたま", "en": "Saitama" } }
with open('sample.json', 'w') as fo:
json.dump(D, fo)
!cat sample.json
{"\u6771\u4eac": {"yomi": "\u3068\u3046\u304d\u3087\u3046", "en": "Tokyo"}, "\u795e\u5948\u5ddd": {"yomi": "\u304b\u306a\u304c\u308f", "en": "Kanagawa"}, "\u5343\u8449": {"yomi": "\u3061\u3070", "en": "Chiba"}, "\u57fc\u7389": {"yomi": "\u3055\u3044\u305f\u307e", "en": "Saitama"}}
del D
D
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-36-39e0574a4abf> in <module> ----> 1 D NameError: name 'D' is not defined
with open('sample.json') as fi:
D = json.load(fi)
D
{'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'}, '神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'}, '千葉': {'yomi': 'ちば', 'en': 'Chiba'}, '埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}}
import pickle
D = {
'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'},
'神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'},
'千葉': {'yomi': 'ちば', 'en': 'Chiba'},
'埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}
}
pickle.dumps(D)
b'\x80\x04\x95\xb2\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x06\xe6\x9d\xb1\xe4\xba\xac\x94}\x94(\x8c\x04yomi\x94\x8c\x0f\xe3\x81\xa8\xe3\x81\x86\xe3\x81\x8d\xe3\x82\x87\xe3\x81\x86\x94\x8c\x02en\x94\x8c\x05Tokyo\x94u\x8c\t\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d\x94}\x94(h\x03\x8c\x0c\xe3\x81\x8b\xe3\x81\xaa\xe3\x81\x8c\xe3\x82\x8f\x94h\x05\x8c\x08Kanagawa\x94u\x8c\x06\xe5\x8d\x83\xe8\x91\x89\x94}\x94(h\x03\x8c\x06\xe3\x81\xa1\xe3\x81\xb0\x94h\x05\x8c\x05Chiba\x94u\x8c\x06\xe5\x9f\xbc\xe7\x8e\x89\x94}\x94(h\x03\x8c\x0c\xe3\x81\x95\xe3\x81\x84\xe3\x81\x9f\xe3\x81\xbe\x94h\x05\x8c\x07Saitama\x94uu.'
with open('sample.pkl', 'wb') as fo:
pickle.dump(D, fo)
with open('sample.pkl', 'rb') as fi:
D = pickle.load(fi)
D
{'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'}, '神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'}, '千葉': {'yomi': 'ちば', 'en': 'Chiba'}, '埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}}
import pprint
D = {
'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'},
'神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'},
'千葉': {'yomi': 'ちば', 'en': 'Chiba'},
'埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}
}
print(D)
{'東京': {'yomi': 'とうきょう', 'en': 'Tokyo'}, '神奈川': {'yomi': 'かながわ', 'en': 'Kanagawa'}, '千葉': {'yomi': 'ちば', 'en': 'Chiba'}, '埼玉': {'yomi': 'さいたま', 'en': 'Saitama'}}
pprint.pprint(D)
{'千葉': {'en': 'Chiba', 'yomi': 'ちば'}, '埼玉': {'en': 'Saitama', 'yomi': 'さいたま'}, '東京': {'en': 'Tokyo', 'yomi': 'とうきょう'}, '神奈川': {'en': 'Kanagawa', 'yomi': 'かながわ'}}
pprint.pprint(D, width=20)
{'千葉': {'en': 'Chiba', 'yomi': 'ちば'}, '埼玉': {'en': 'Saitama', 'yomi': 'さいたま'}, '東京': {'en': 'Tokyo', 'yomi': 'とうきょう'}, '神奈川': {'en': 'Kanagawa', 'yomi': 'かながわ'}}
import sys
sys.argv
Python早見帳 © Copyright 2020-2022 by 岡崎 直観 (Naoaki Okazaki). この作品はクリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンスの下に提供されています。